我有一个文档,编译时没有错误或警告(看起来正确),但对于文档的某些部分,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.tex
到ch1_intro2.tex
(目录中chapters
) - 主文档中的包含引用
\include{chapters/ch1_intro2}