使用 latexmk 对目录中的多个 tex 文件进行处理

使用 latexmk 对目录中的多个 tex 文件进行处理

编辑

解决方案:

latexmk -pdf mainfile.tex

我保留了这个例子,因为它可能包含不熟悉这个领域的人使用的语言:)

至少它提供了一个编译主文件(其中包含子文件以及参考书目)的最小工作示例。在本示例中,所有这些都位于同一目录中(我相信文件管理有更实用的解决方案,“给读者的练习...”)。

这是我使用的 bash 别名,因为我总是将主文件命名为main.tex

# latex compile if files called main
alias ltmk="latexmk -bibtex -pdf -pvc ./main.tex"

我不能保证这是最佳做法——但它对我来说有效。


我可以使用latexmk -pdf

如果我有一个 tex 文件作为主文件,其中包含其他 tex 文件,latexmk 似乎会感到困惑,我只是想知道这里的最佳实践是什么?

我尝试使用类似以下内容来指定主文件latexmk master.tex -pdf

谢谢

这是一个 MWE(我认为!)

主文件

\documentclass[11pt,a4paper,oneside]{book}
%------------------------------------------------------------
\usepackage[style=authoryear-comp]{biblatex}
\addbibresource{invest_bib.bib}
%------------------------------------------------------------

\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter{Something that I have written }\label{introduction}


This will be a citaion: \parencite{WinNT}
Here is another citation!(with parens) : \parencite{WinNT}
have another go \parencite{WinNT}

% this is the file that I would like to be input at this 
% location
\input{test}

\backmatter

\printbibliography

\end{document}

要包含的文件

\section{Something else}

This is something that's being included. 

Can I still cite things from the bib file that's in the 
directory? 

Like \parencite{WinNT}

I'm not sure....

Bib 文件

@online{WinNT,
  author = {MultiMedia LLC},
  title = {{MS Windows NT} Kernel Description},
  year = 1999,
  url = {http://web.archive.org/web/20080207010024/http://www.808multimedia.com/winnt/kernel.htm},
  urldate = {2010-09-30}
}

答案1

这里的问题是,如果你没有在latexmk命令行上指定任何文件,它将默认尝试编译全部当前目录中的 tex 文件。但是,如果某些文件是由其他人输入的,而不是自己可编译的,则会出现错误,正如 OP 发现的那样。

正如问题中所观察到的,最简单的解决方法是将所需的主文件名放在命令行上。

但只需键入latexmk并让程序弄清楚要做什么,这仍然很方便。有两个配置变量可以更改 的默认行为:请参阅和 的latexmk文档。[第二个变量仅在 v. 4.43a 开始记录,这是我写这个答案时的当前版本。]@default_files@default_excluded_files

在问题的示例中,将以下几行放入其中一个latexmk配置 rc 文件中,将允许简单的命令行latexmk工作

@default_excluded_files = ( 'test.tex' );
$pdf_mode = 1; $dvi_mode = $postscript_mode = 0;

作为奖励,我添加了第二行,这样就可以制作 pdf 文件,而无需-pdf在命令行中包含,我觉得这很方便。

相关内容