Arara synctex 正在编辑一本书

Arara synctex 正在编辑一本书

问题是 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

在命令行中查看会发生什么。我能想到一些场景:

  1. 编辑器不知道存在生成最终 PDF 的编译链,因此没有任何更新,或者

  2. 您的源代码中有指令(未在此特定示例中显示)可以通过删除synctex.gz文件来清理目录,或者

  3. 源代码中存在潜在冲突,导致了此问题。

说到这里,我注意到日志文件包含大量有关交叉引用的警告。虽然 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。

相关内容