合并由 \includepdf 混合的文档的 .synctex 文件

合并由 \includepdf 混合的文档的 .synctex 文件

当我排版期刊时,我首先制作单独的文章,然后将它们合并在一起(添加目录和其他内容,现在这些已经无关紧要了)。

当我阅读最终的 时issue.pdf,我经常会发现文章中的小错误。但是, TeXworks 中的上下文菜单只会将我带到中的Jump to Source说明,而不是正确的文件。\includepdfissue.texa1/art1.tex

有什么方法可以正确地将.synctex.gz所有文章和问题本身生成的所有文件连接起来,以便正向逆向搜索能够按我希望的方式进行?

我也欣赏部分或非自动化的解决方案和想法。

MWE:文件issue.tex

\documentclass{article}
\usepackage{pdfpages}
\begin{document}

\begin{center}
This is an issue 42 of Journal of funny \TeX\@ questions.\\
Contents:\\
Article One, on page 2\\
Article Two, on page 4
\end{center}

\includepdf[pages=-]{a1/art1.pdf}
\includepdf[pages=-]{a2/art2.pdf}

\end{document}

MWE:文件a1/art1.tex

\documentclass{article}
\title{ARTICLE ONE}
\setcounter{page}{2}

\begin{document}
\maketitle
Some text. Some text. Some text.

\newpage
Other page of article one.
\end{document}

MWE:文件a2/art2.tex

\documentclass{article}
\title{ARTICLE TWO}
\setcounter{page}{4}

\begin{document}
\maketitle
Some text. Some text. Some text.

\newpage
Other page of article two.
\end{document}

答案1

这是一个生成所需 SyncTeX 文件的算法。完整实现是其中一种方法,但需要一段时间……因此,目前我将答案或多或少限制在 MWE 上的应用程序。(未来似乎可以进行概括……)

  1. 解压所需synctex文件。以下 shell 脚本(另存为decompress-synctex)执行此操作。

    #!/bin/sh
    SYNCGZ=.synctex.gz
    SYNC=.synctex
    for SFILE; do   # unzipping all files + save main file
        gunzip -c $SFILE$SYNCGZ > $SFILE$SYNC
    done
    cp $1$SYNC $1-orig$SYNC
    cp $1$SYNCGZ $1-orig$SYNCGZ
    

    运行如下:./decompress-synctex issue a1/art1 a2/art2

  2. 插入以例如结尾Input:的行art1.synctexart1.tex

    Input:1:/home/tux/testing/a1/./art1.tex
    

    在开头的issue.synctex所有行之后但在 之前。对其他文件重复此步骤。Input:ContentartX.synctex

  3. 在每个文件中,直到说明框记录之间synctex的行{i}i i. 这样的盒子记录线

    (a)由“[”、“(”、“v”、“h”、“x”、“k”、“g”、“$” 后面跟着<input number>, “,” 和其余内容组成,或者

    (b)为“]”或“)”,或

    (c)以“!”开头,并以数字结尾(到达以前的”!”)。

    现在,:插入Input:行中后面的数字必须更改,以便全部 Input:整个 中的行issue.synctex是连续的。如果您将其更改Input:1:...art1.texInput:42:...art1.tex,您还必须更改所有相应的框记录,即[1,...变为[42,...但仅限于属于 的那些页面(记住{i...... }iInput:....art1.tex,对于“(”、“v”、“h”、“x”、“k”、“g”、“$”框也是如此。

    由于这还不够复杂,请计算每页中的替换次数(希望您的编辑器在替换时会为您计算),并将此数字添加到页面末尾“!”后面的数字中。如果位数增加了 k 位,则最后将 k 添加到下一个“!”后面的数字中。

  4. 如果没有犯错误,那么您很幸运,反向搜索将按预期进行!

相关内容