设置页面背景会影响 synctex 的位置

设置页面背景会影响 synctex 的位置

我正在使用 TeXstudio 编辑器。当我使用 \addtohook 命令设置背景图片时。它会影响 Synctex 位置,使其始终指向页面末尾,而不是我输入的实际文本。

这是一个简单的例子,我创建了一个文档,第一页有背景,第二页没有背景:

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\AddToHookNext{shipout/background}{%
    \put (0in,-\paperheight){\includegraphics{background.png}}%
}
\section{part 1}
This is the part one.
\section{part 2}
This is the part two.
\section{part 3}
This is the part three.
\section{part 4}
This is the part four.
\section{part 5}
This is the part five.
\section{part 6}
This is the part six.
\newpage
\section{part 7}
This is the part seven.
\section{part 8}
This is the part eight.
\section{part 9}
This is the part nine.
\section{part 10}
This is the part ten.
\section{part 11}
This is the part eleven.
\section{part 12}
This is the part twelve.
\end{document}

在输出 pdf 查看中,如果您按住 Ctrl 并单击第一页中的单词,它始终指向 \newpage 行。但在第二页中,它实际上指向我输入的单词。我已经使用 background 包和 eso-pic 包进行了测试。它们都给出了相同的结果。我认为一种解决方法是使用 \colorbox 来设置背景颜色,但它不适合整个页面。此外,它只允许设置简单的颜色背景,而不是实际的图片背景。

有没有办法给页面添加背景,并且使 synctex 仍然正常工作?

在此处输入图片描述我添加了 png 文件格式的背景图片,如果有人想测试一下。这只是使用 Inkscape 进行的简单绘图。图片左侧和底部有灰色条纹。

通过进一步的测试,我发现不同格式的图片文件也会对同步产生影响。如果包含pdf文件,每个单词都会失效。如果包含png文件,部分标题单词也会失效。但其余文本会同步到正确的位置,除非它与背景重叠。我无法在这里上传pdf图片文件。如果有人想测试它,你可以用inkscape创建一个。

- - - - - - - - - - - 解决方案 - - - - - - - - - - - -

在尝试了不同的方法后,我发现使用 tiz 环境添加背景不会影响 synctex。我在这里包含该方法以防有人遇到问题。这样,就不需要 \addtohooknext 命令了。直接使用 \begin{tikzpicture}。我认为“记住图片”和“覆盖”选项可以解决问题,即在计算当前图片的边界框时不考虑当前范围内的所有内容。参见https://mirror.its.dal.ca/ctan/graphics/pgf/base/doc/pgfmanual.pdfp.259 了解详情。

\begin{tikzpicture}[remember picture,overlay]
    \node[inner sep=0pt] at (current page.center)
    {\includegraphics[width=\paperwidth,height=\paperheight]{background.pdf}};
\end{tikzpicture}

答案1

不同之处在于\inludegraphics插入背景图像的命令所创建的大框。LaTeX 将页面组织成水平框以包含行,垂直框以包含段落、列表等。当您单击 pdf 页面时,SyncTeX 会尝试找到最近的框,然后将您带到相应的源。

在带有背景的第一页上,如果您精确地单击某个文本,TeXworks 等智能编辑器会将您带到您单击的那个字母(TeXstudio 肯定会这样做)。但是,如果您单击得稍微远一些,那么您就会回到命令在 shipout 时创建的大背景框\newpage:这就是您被重定向到那里的原因。在第二页上,如果您单击得稍微远一些,SyncTeX 就有机会找到附近的一个框,而且它似乎工作得更好。

SyncTeX 看不到图片或文本,它只看到框作为容器(以及一些锚点)。它看不到图像的格式,只看到其大小和位置。

目前,您的问题还没有解决方案。也许随着即将推出的 LuaTeX 工具和一些 SyncTeX 适配,情况会有所改善。

相关内容