![Arara synctex 正在编辑一本书](https://linux22.com/image/391750/Arara%20synctex%20%E6%AD%A3%E5%9C%A8%E7%BC%96%E8%BE%91%E4%B8%80%E6%9C%AC%E4%B9%A6.png)
问题是 Arara 中的 synctex 对我来说不起作用。
我正在使用 MacTeX 和 TeXShop 4.26。使用了一个特殊的 documentclass(希望它不会产生影响)。几个月来,我通过将所有支持文件(如 chp1.tex)放入同一个文件夹并单击 command+T 来运行此文件。从 pdf 同步到 tex,除了从 tex 同步到 pdf 之外,其他一切都很好。从 tex 同步到 pdf 可以很好地直接使用 pdflatex(而不是使用 Arara)编辑任何其他简单文件。有什么问题吗?
% !TEX TS-program = Arara
% arara: pdflatex
% arara: bibtex
% arara: makeindex
% arara: nomencl
% arara: pdflatex: {synctex: yes}
% arara: pdflatex: {synctex: on}
\documentclass[cmyk]{***}
\usepackage{amsrefs}
\usepackage{imakeidx}
\usepackage{graphicx,tikz,amscd}
\usepackage[hyperindex,colorlinks,pageanchor]{hyperref}
\usepackage[capitalize]{cleveref}
\makeindex
\usepackage[refpage]{nomencl}
\makenomenclature
\begin{document}
\frontmatter
\input{front}
\tableofcontents
\include{preface}
\mainmatter
\include{chp1}
\include{chp2}
\appendix
\include{appd}
\backmatter
\bibliographystyle{amsalpha}
\bibliography{biblio}
\printindex
\printnomenclature
\pagestyle{empty}
\end{document}
答案1
我故意将此答案标记为社区维基,因为它实际上并不是一个直接的答案,而是一个详细的评论,太长了,不适合这样发布。我真的不想收获声誉。:)
首先,谢谢你的日志。:)
从检查日志可以清楚地看出,arara
成功执行了从指令映射的命令的所有动作。但是,对我来说,没有明确的迹象表明该工具是导致此问题的原因。我将对此进行详细说明。
arara
就像一个包装器,可以简化对实际程序(如pdflatex
和朋友)的调用。事实上,如果我使用提供的代码并在--dry-run
启用的情况下运行该工具,我们可以看到arara
在正常情况下实际执行的内容(在这里,当然没有 a 调用,因为此标志会禁用实际执行):
$ arara --dry-run 478314.tex
__ _ _ __ __ _ _ __ __ _
/ _` | '__/ _` | '__/ _` |
| (_| | | | (_| | | | (_| |
\__,_|_| \__,_|_| \__,_|
Processing '478314.tex' (size: 231 bytes, last modified:
03/10/2019 17:53:47), please wait.
[DR] (PDFLaTeX) PDFLaTeX engine
-----------------------------------------------------------------
Authors: Marco Daniel, Paulo Cereda
About to run: [ pdflatex, 478314.tex ]
[DR] (BibTeX) The BibTeX reference management software
-----------------------------------------------------------------
Authors: Marco Daniel, Paulo Cereda
About to run: [ bibtex, 478314 ]
[DR] (MakeIndex) The MakeIndex software
-----------------------------------------------------------------
Authors: Marco Daniel, Paulo Cereda
About to run: [ makeindex, -t, 478314.ilg, 478314.idx, -o,
478314.ind ]
[DR] (Nomencl) The Nomenclature software
-----------------------------------------------------------------
Authors: Marco Daniel, Nicola Talbot, Paulo Cereda
About to run: [ makeindex, 478314.nlo, -s, nomencl.ist, -o,
478314.nls ]
[DR] (PDFLaTeX) PDFLaTeX engine
-----------------------------------------------------------------
Authors: Marco Daniel, Paulo Cereda
About to run: [ pdflatex, --synctex=1, 478314.tex ]
[DR] (PDFLaTeX) PDFLaTeX engine
-----------------------------------------------------------------
Authors: Marco Daniel, Paulo Cereda
About to run: [ pdflatex, --synctex=1, 478314.tex ]
Total: 0.42 seconds
最后两个调用带有pdflatex
标志--synctex=1
,预计可以提供适当的 SyncTeX 支持。就是这样。
然而,如果不深入研究你的实际环境和代码以了解发生了什么,几乎什么也做不了。我的建议是独立运行
pdflatex --synctex=1 myfile.tex
在命令行中查看会发生什么。我能想到一些场景:
编辑器不知道存在生成最终 PDF 的编译链,因此没有任何更新,或者
您的源代码中有指令(未在此特定示例中显示)可以通过删除
synctex.gz
文件来清理目录,或者源代码中存在潜在冲突,导致了此问题。
说到这里,我注意到日志文件包含大量有关交叉引用的警告。虽然 SyncTeX 与它没有直接关系,但也许值得检查一下。就我而言,我尝试了几个文档,它们都有效,所以我真的无法重现这个问题,我很抱歉。
请尝试pdflatex
以独立调用的方式运行,而不是使用arara
,看看它是否有效。另外,尝试其他类似的工具,如latexmk
。如果问题仍然存在,我们可能需要找到一个可以重现该问题的最小工作示例,否则我只能假设。
很抱歉无法帮助您解决此问题。请及时告知我。
答案2
我找到了一个解决方案:% !TEX root = main.tex
在文件的每个章节开头添加,例如文件 chp1.tex。此命令分配一个相对路径,以便生成的同步文件找到包含一行 \include{chp1} 的主文件。另一种解决方案是添加绝对路径,例如,
% !TEX root = /Users/main.tex
如果/Users/main.tex
是文件 main.tex 在我的 Mac 上的位置。问题应该是关于在多文件中编辑一本书,而不是使用 Arara。