我.latexmkrc
设置为传递-synctex=1
,pdflatex
以便能够从我的 pdf 查看器跳回到源:
$pdflatex='pdflatex -synctex=1 %O %B';
$pdf_mode=1;
$pdf_previewer="start okular %O %S";
这很有效。但是,我需要使用lualatex
来编译一些文档,因为它使用的包之一不受 支持pdflatex
。在这种情况下,我可以使用latexmk -lualatex -synctex=1 document.tex
来synctex
启用,但我想调整我的.latexmkrc
以便能够只需键入即可latexmk -lualatex document.tex
获得synctex
信息(如果命令行中未指定,则保留pdflatex
默认设置-lualatex
)。到目前为止我还没有成功。特别是,添加行
$lualatex='lualatex -synctex=1 %O %B';
$pdflatex
无论是在in定义之前还是之后,.latexmkrc
都不会执行任何操作。这可能吗?
注意:以防万一,我的版本latexmk
(据报告-v
)是 4.41
答案1
使用latexmk
4.61 版本,您可以运行
latexmk -showextraoptions
latexmk
获取可以提供给并传递给的选项列表(pdf)latex
。在这些选项中,您可以找到synctex
,因此
latexmk -lualatex -synctex=1
在一次性情况下。在latexmkrc
文件中,手册页中有关高级配置的部分显示,可以使用set_tex-commands
以下选项来设置全部版本的 latex。因此可以写
set_tex_cmds( '-synctex=1 %O %S' );
并将与之一起latexmk -lualatex
运行。lualatex
synctex
答案2
$pdflatex='lualatex -synctex=1 %O %B';
在与源文件相同的目录中创建一个 latexmkrc 文件是否不能完成这项工作?
答案3
经过探索/usr/bin/latexmk
,我得出了以下.latexmkrc
似乎可以解决问题的方法:
push @extra_pdflatex_options, '-synctex=1' ;
$pdf_mode=1;
$pdf_previewer="start okular %O %S";
即,$pdflatex
我不再直接重新定义 ,而是添加一个额外的选项传递给它,然后让它latexmk
决定应该启动哪个命令。唯一让我担心的是,据我所知,的手册页extra_pdflatex_options
上没有记录latexmk
,所以我不确定这个解决方案在进化方面的稳健性latexmk
。
答案4
我建议只.latexmkrc
在您的主目录中创建一个文件:放入这两个命令或至少是 pdflualatex 命令。
$pdflatex = 'pdflatex -interaction=nonstopmode -synctex=1 %O %S;';
$pdflualatex = 'lualatex -interaction=nonstopmode -synctex=1 %O %S;';
然后只需在任何目录中使用以下命令调用 latexmk:latexmk -lualatex
它将使用主目录中的设置。
要覆盖该设置,只需将新的 latexmkrc 文件放入编译目录中,或使用-r
latexmk 命令传入 latexmkrc 文件。我没有放置默认的 latexmkrc,但我在 bash 中有一个别名,用于运行-r
指向默认命令的命令,因此这也是一个选项。