隐藏 .synctex 文件

隐藏 .synctex 文件

我使用 WinEdt 10.1 和 Sumatrapdf。我发现反向搜索非常有用。但是,.synctex 文件对我来说非常烦人,因为我在一个包含多达一百个 latex 文件的文件夹中工作(并且我根据修改时间排列文件)。在 WinEdt 中,有一个选项可以将所有辅助文件放入名为“TeXAuX”的文件夹中,这非常简洁,但不知何故 .synctex 文件必须与 .tex 文件位于同一目录中。

所以我的问题是,有没有办法(最好通过修改 WinEdt 选项中的“编译”命令)在编译后立即将 .synctex 文件的属性更改为“隐藏”?

提前致谢!

答案1

没有作用于文件属性的 WinEdt 宏。

但是我们可以告诉 WinEdt 使用attribDOS 命令来实现你想要的。

您必须遵循以下步骤:

  1. %B\Exec\ExeCompilerPost.edt在 WinEdt 中打开该文件(%B是您安装该程序的目录,类似于C:\Program Files\WinEdt Team\WinEdt 10)。
  2. 显示“选项界面”(选项 -> 选项界面),点击“高级配置”:

    在此处输入图片描述

  3. 现在,在选项界面工具栏中,点击“创建并打开本地副本”按钮:

    在此处输入图片描述

  4. 打开了的本地副本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");
    
  5. 将这些行替换为以下内容:

        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");
    
  6. 保存文件即可完成。


现在,每次编译文件时,相关的 synctex 文件都会保存为隐藏文件。

答案2

您可以使用-output-directory="output"(右侧是目录名称)参数,例如

xelatex -synctex=1 -interaction=nonstopmode -output-directory="output" "something.tex"

这样您的输出将被放置在单独的目录中,但目录必须存在,以便它可以写入其中。但我不确定它如何与反向搜索一起工作。

相关内容