![尝试性解决方案:软链接(或者mklink在Windows中)](https://linux22.com/image/368687/%E5%B0%9D%E8%AF%95%E6%80%A7%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%EF%BC%9A%E8%BD%AF%E9%93%BE%E6%8E%A5%EF%BC%88%E6%88%96%E8%80%85mklink%E5%9C%A8Windows%E4%B8%AD%EF%BC%89.png)
问题:在nonstopmode
共享文件夹中进行编译==>如何避免冲突文件?
我习惯于同时运行 latexmk,nonstopmode
每次换机器的时候都会忘记停止,而我经常编辑的文档托管在 Nutstore(Dropbox 的中文版)上,所以两个 latexmk 进程同时运行nonstopmode
会产生很多冲突文件。
有没有隐latexmk 的设置可以“检测”是否有另一个 latexmk 进程也在运行nonstopmode
?目前,我正在使用以下参数编译我的 tex 文档:
latexmk.pl -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode filename.tex
我正在寻找一组可以在 中编译的规范nonstopmode
,但只有在没有正在进行的编译过程写入同一目录时才会开始编译。我可以想象project.latexmain.lock
故意将文件放入工作目录中就可以达到目的。
我的设置的详细信息:
我使用两台具有相同用户名的 Windows 计算机。并且,我latexmk
通过 Git-Bash 运行,通过欧洲货币联盟(控制台模拟器)。目前,我已经定义了“启动任务”,这样每当我启动 ConEMU 时,我的活动文档列表(正在进行的项目、研究日志和笔记)都会被“加载”(编译在 中nonstopmode
)。
就编译器而言,我使用的是 MikTex。
答案1
尝试性解决方案:软链接(或者mklink
在Windows中)
作为@土拨鼠建议,人们可以选择任何他/她想要的本地文件夹,并将所有编译都放在这个本地文件夹中。以下是一些帮助我理解这种情况的说明:
首先,软链接可以构造为文件:因此,通过在 Windows 中发出以下命令,目标和原点之间就会发生双向“同步”。
mklink address_for_target.txt address_for_Origin.txt
在我看来,软链接创建 Origin 文件的“物理副本”,我的意思是:我可以在目标位置“看到”相同的文件。并且,根据其“真实位置”编辑任一文件都将更新另一个位置的内容。
为了处理图片导入,可以创建软链接也适用于文件夹(目录)。
- 最后,为了实现向前和向后的搜索/跳转,创建一个软链接对于
project_main.tex.latexmain
。(我的 Tex 编辑环境:Windows OS + GVim +latexmk
(通过 ConEMU)+ MikTeX 发行版)
具体步骤(Windows系统):
- 找到一个本地文件夹(就我而言:
D:\build
用于测试目的); - 使用 创建“软链接”
mklink D:\build\main_project.tex C:\project\main_projeect.tex
。(并且,重复mklink
对于*.tex
通过函数获取的所有文件\input{}
,以及对于,这样的命令project.latexmain
可能会有所帮助(这是我的演示:建立链接)。 - 一旦构建了所有“软链接”,就可以编辑目标目录中的文件;并且编译也可以运行。
注意更新
然而,为文件创建这样的镜像对我来说是全新的,而且似乎需要花费我更多的时间才能将其融入到我的工作流程中。
約翰·柯林斯,我们敬爱的 Latexmk 维护者,已将问题作为功能请求接受。他在评论中说,在latexmk
同一台计算机上运行两个进程也会生成冲突文件。通过 Dropbox 进行文件同步只是此类冲突的一个特例。等待更新 :)