如何检查 LaTeX 生成的 PDF 文件当前是否被应用程序打开?
答案1
我认为您的问题与以下事实有关:如果文件在 Acrobat Reader 中打开,PDFLaTeX 无法写入文件。据我所知,旧版本的 Acrobat Reader 可以使用外部 DDE 命令关闭并重新打开,但版本 9 和 X 则不行。
Acrobat Reader 也无法支持新的 synctex 技术,因此这里最好的是苏门答腊 PDF适用于 Windows 环境。编译文档时无需关闭它,它支持通过 synctex 进行反向搜索。一些编辑器,如编辑在 Windows 上直接支持它并且反向搜索工作得很好。外壳和纺织工作室(以前称为 TexMakerX)的 Windows 版本可以配置为使用 synctex 支持。或者使用内置有 synctex 支持查看器的编辑器之一,例如纺织工坊,纺织机械制造商或 TexStudio。
答案2
由于您在一条评论中提到您正在使用 Linux,因此确定程序当前是否正在访问文件的标准方法是命令lsof
。例如:
user@host:~$ lsof /path/to/filename.pdf
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
okular 3961 user 26r REG 0,21 5357342 12608996 /path/to/filename.pdf
阅读评论后,您说您想终止该进程,这里有一行代码。
kill $(lsof -Fp /path/to/filename | egrep -o "[0-9]+")
解释:lsof 找到文件名,-Fp 选项提取 PID,egrep(我更喜欢使用带有扩展正则表达式语法的 grep)只抓取数字,因为它会打印 pXXXX。它被包装在 $() 中并首先进行评估,然后运行 kill。感谢 kahen 知道获取 PID 的命令行选项
答案3
由于您使用的是 Linux,我可以告诉您,您可能不需要检查文件是否打开。
当我编译.tex
文件(通常使用pdflatex
)时,我也.pdf
使用以下任一方式查看文档:
- pdf:只需按下r即可刷新文档。
- 表明:它会自动刷新。