我使用 WinEdt 10.1 和 Sumatrapdf。我发现反向搜索非常有用。但是,.synctex 文件对我来说非常烦人,因为我在一个包含多达一百个 latex 文件的文件夹中工作(并且我根据修改时间排列文件)。在 WinEdt 中,有一个选项可以将所有辅助文件放入名为“TeXAuX”的文件夹中,这非常简洁,但不知何故 .synctex 文件必须与 .tex 文件位于同一目录中。
所以我的问题是,有没有办法(最好通过修改 WinEdt 选项中的“编译”命令)在编译后立即将 .synctex 文件的属性更改为“隐藏”?
提前致谢!
答案1
没有作用于文件属性的 WinEdt 宏。
但是我们可以告诉 WinEdt 使用attrib
DOS 命令来实现你想要的。
您必须遵循以下步骤:
%B\Exec\ExeCompilerPost.edt
在 WinEdt 中打开该文件(%B
是您安装该程序的目录,类似于C:\Program Files\WinEdt Team\WinEdt 10
)。显示“选项界面”(选项 -> 选项界面),点击“高级配置”:
现在,在选项界面工具栏中,点击“创建并打开本地副本”按钮:
打开了的本地副本
ExeCompilerPost.edt
。在此文件中,在文件末尾附近搜索以下行:IfFileExists("%O\%N.%!7",!"CopyFile('%O\%N.%!7','%P\%N.%!7',1);DeleteFile('%O\%N.%!7');"); IfFileExists("%O\%N%$('PDF-SyncEx');",> !"CopyFile('%O\%N%$(|PDF-SyncEx|);','%P\%N%$(|PDF-SyncEx|);',1);DeleteFile('%O\%N%$(|PDF-SyncEx|);');"); JMP(!"Post_Done");
将这些行替换为以下内容:
IfFileExists("%O\%N.%!7",!"CopyFile('%O\%N.%!7','%P\%N.%!7',1);DeleteFile('%O\%N.%!7');"); IfFileExists("%O\%N%$('PDF-SyncEx');",> !"CopyFile('%O\%N%$(|PDF-SyncEx|);','%P\%N%$(|PDF-SyncEx|);',1);DeleteFile('%O\%N%$(|PDF-SyncEx|);');"); IfFileExists("%P\%N%$('PDF-SyncEx');",> !"WinExe('','cmd.exe /C attrib +h %N%$(|PDF-SyncEx|);','%P','',011100);"); JMP(!"Post_Done");
保存文件即可完成。
现在,每次编译文件时,相关的 synctex 文件都会保存为隐藏文件。
答案2
您可以使用-output-directory="output"
(右侧是目录名称)参数,例如
xelatex -synctex=1 -interaction=nonstopmode -output-directory="output" "something.tex"
这样您的输出将被放置在单独的目录中,但目录必须存在,以便它可以写入其中。但我不确定它如何与反向搜索一起工作。