TeXworks:synctex 仅部分起作用

TeXworks:synctex 仅部分起作用

我有一个文档,编译时没有错误或警告(看起来正确),但对于文档的某些部分,synctex 似乎不起作用。可能是什么问题?

该文档由一个根.tex文件和\input一堆其他文件组成。Synctex 适用于所有这些子文档 - 除了一个。实际上,这意味着我可以在查看器中按住 Ctrl 键并单击,并在此特定子文档之前和之后的文本部分中找到适当的位置。相反,我可以在编辑器中按住 Ctrl 键并单击,并跳转到视图中除此子文档之外的所有子文档中的正确位置。

但是,当我按住 Ctrl 并单击与此特定子文档相对应的输出部分时,Cannot read file "E:/emn/uni/Thesis/doc": Access is denied.在 TeXworks 查看器中出现以下错误弹出窗口:此错误消息中的路径存在,但它是一个目录:即包含 tex 文件的目录。

  • 所有文件名仅由拉丁字母、数字和下划线以及扩展名组成.tex。有问题的文件被称为G2MLVQ_9_Refinements.tex,而(正常工作的)文件被称为G2MLVQ_7_Implementation.tex
  • 我无法制作一个失败的小例子 - 小例子不会失败;但是文件的顺序似乎很重要,所以也许早期文件中的某些内容会在以后影响 synctex......(一旦我隔离了它,我会更新问题)。
  • 涉及 MiKTeX 2.9 和捆绑的 TeXworks 版本 0.4.3 r.857。

我很困惑:到底出了什么问题?

编辑:用户59152 尝试隔离错误:

实际上,为这个问题创建一个最小工作示例 (MWE) 是不可能的,因此我发布了一个演示错误的“jing”(截屏视频)。您可以在窗口顶部看到文件名。正在编辑的文件 ( Introduction.tex) 位于无法使用反向搜索打开的文件 ( SourceAndSinkFreeContinuumRVtracking.tex) 之前。屏幕截图电影确认\clearpage恢复了反向搜索功能,但破坏了文档的布局,因此这个问题似乎仍未解决。我使用的是 TeXworks 版本 0.4.4 r.1003 和 MikTex 2.9。

答案1

将最后一节从 capter_y.tex 移动到 chapter_x.tex 中的某个地方后,我遇到了完全相同的问题。移动后,chapter_y.tex 之后的章节 chapter_z.tex 在尝试“跳转到 pdf”/“跳转到源”时失败

我不知道为什么这个有效,但是通过在失败的章节之前包含 \clearpage 解决了这个问题:

\documentclass[a4paper,norsk,11pt,twoside]{book}
\usepackage[utf8]{inputenc}
...
\input{chapter_x}
\input{chapter_y}
\input{chapter_z}

...
\input{chapter_x}
\input{chapter_y}
\clearpage
\input{chapter_z}

在我的例子中,对于问题章节之前的章节和问题章节本身,使用 \include{.} 代替 \input{.} 也是可行的,因为

\include{.} == \clearpage \input{.} \clearpage

我正在使用 MikTex 2.9,Windows 7 32 位。

希望这可以帮助。

答案2

我在 WinEdt 和 SumatraPDF 上遇到过类似的问题。经过反复试验,我发现如果我对两个文件都使用 \input(例如,第一个文件包含“复杂”的 tikzpicture,而第二个文件可能发生 synctex 搜索错误),而不是使用 \include,错误就会消失。如果我需要对第二个文件使用 \newpage 或 \clearpage,我会使用文件内的命令,而不是在主文件中的 \input 命令之前。

对于“复杂的 tikzpicture”的示例,您可以尝试 Stefan Kottwitz 的博客“使用 TikZ 制作精美表格”的示例:

http://texblog.net/latex-archive/graphics/tikz-table/

希望我的经历能对你有所帮助。

以下是 MWE:

主文件

\documentclass{article}
\usepackage{tikz} %% to construct a complex tikzpicture
\usetikzlibrary{calc}
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}

\begin{document}
\section{Main File}
Three more tex files will be added below.

% part1 contains a tikzpicture
\input{synctex-part1}

%\newpage, \clearpage or \include may break synctex
\input{synctex-part2}

\newpage  % now without it, synctex in part 3 is broken
\input{synctex-part3}

\end{document}

synctex-第一部分.tex

\section{Part 1}
a complex tikzpicture

\begin{tikzpicture}
\node (mynode) {\Large This tikzpicture may cause synctex failure.};%
%% without pgfonlayer, synctex works fine regardless include or input
\begin{pgfonlayer}{background}%
%% draw a box
\draw[rounded corners,top color=red,bottom color=black!40!red,draw=white]
    ($(mynode.south west)-(0.1,0.1)$) rectangle ($(mynode.north east)+(0.1,0.1)$);
\end{pgfonlayer}%
\end{tikzpicture}

您可以在 synctex-part2.tex 和 synctex-part3.tex 中写入任何内容进行测试。

答案3

对我来说,重命名章节文件就够了。

我重新命名了...

  • 文件ch1_intro.texch1_intro2.tex(目录中chapters
  • 主文档中的包含引用\include{chapters/ch1_intro2}

相关内容