当我排版期刊时,我首先制作单独的文章,然后将它们合并在一起(添加目录和其他内容,现在这些已经无关紧要了)。
当我阅读最终的 时issue.pdf
,我经常会发现文章中的小错误。但是, TeXworks 中的上下文菜单只会将我带到中的Jump to Source说明,而不是正确的文件。\includepdf
issue.tex
a1/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 上的应用程序。(未来似乎可以进行概括……)
解压所需
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
插入以例如结尾
Input:
的行art1.synctex
art1.tex
Input:1:/home/tux/testing/a1/./art1.tex
在开头的
issue.synctex
所有行之后但在 之前。对其他文件重复此步骤。Input:
Content
artX.synctex
在每个文件中,直到说明框记录之间
synctex
的行{i
}i
页i
. 这样的盒子记录线(a)由“[”、“(”、“v”、“h”、“x”、“k”、“g”、“$” 后面跟着
<input number>
, “,” 和其余内容组成,或者(b)为“]”或“)”,或
(c)以“!”开头,并以数字结尾(到达以前的”!”)。
现在,
:
插入Input:
行中后面的数字必须更改,以便全部Input:
整个 中的行issue.synctex
是连续的。如果您将其更改Input:1:...art1.tex
为Input:42:...art1.tex
,您还必须更改所有相应的框记录,即[1,...
变为[42,...
但仅限于属于 的那些页面(记住{i
......}i
)Input:....art1.tex
,对于“(”、“v”、“h”、“x”、“k”、“g”、“$”框也是如此。由于这还不够复杂,请计算每页中的替换次数(希望您的编辑器在替换时会为您计算),并将此数字添加到页面末尾“!”后面的数字中。如果位数增加了 k 位,则最后将 k 添加到下一个“!”后面的数字中。
如果没有犯错误,那么您很幸运,反向搜索将按预期进行!