stone-zeng / fduthesis

LaTeX thesis template for Fudan University
LaTeX Project Public License v1.3c
824 stars 207 forks source link

`-shell-escape` 会让编译陷入死循环? #137

Closed Jeff-Tian closed 4 years ago

Jeff-Tian commented 4 years ago

我引用 fduthesis,写了一段需要画图的代码,然后使用 latexmk -xelatex -shell-escape xxx 编译,会陷入死循环:

xxx.tex

\documentclass{article}

\usepackage{xeCJK}
\usepackage{ctex}
\usepackage{float}

\usepackage[pdf]{graphviz}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}

\begin{document}

% !layout

\begin{figure}[H]

    \centering
    \digraph[scale=0.8]{uniarch}{rankdir=TB;
        edge [fontname="FangSong"]
        node [shape=box, fontname="FangSong" size="20,20"]

        view1 [label="前端项目 A"]
        view2 [label="前端项目 B"]
        view3 [label="前端项目 C"]
        view4 [label="前端项目 D"]

        view1bff [label="A BFF"]
        view2bff [label="B BFF"]
        view3bff [label="C BFF"]
        view4bff [label="D BFF"]

        service1 [label="Service 1"]
        service2 [label="Service 2"]
        service3 [label="Service 3"]

        view1 ->    view1bff -> service1 
        view2 ->    view2bff -> service1
                    view2bff -> service2 

        view3 ->    view3bff -> service2
                    view3bff -> service3 

        view4 ->    view4bff -> service3
    }
    \caption[U 公司项目架构图]{%
        U 公司项目架构图 }
\end{figure}

\end{document}

请问这是为什么?不加 -shell-escape 没有问题,但是我这正的 tex,还有其他画图逻辑,又必须加上 -shell-escape

stone-zeng commented 4 years ago

一般性的问题,欢迎去 https://github.com/CTeX-org/forum

stone-zeng commented 4 years ago

我这边编译没有遇到问题,请提供一下编译生成的 log 文件。

Jeff-Tian commented 4 years ago

今天又不能重现了。我再观察一下。出问题时,log 很长,到最后显示类似这样的:

[1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16][17][18][19][20][21][22][23][24][25][26][27]
357440 bytes written
Latexmk: All targets () are up-to-date
----------------------
This message may duplicate earlier message.
Latexmk: Failure in processing file 'main':
   'xelatex' needed too many passes
----------------------
Latexmk: Use the -f option to force complete processing,
 unless error was exceeding maximum runs, or warnings treated as errors.