编辑
解决方案:
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
在命令行中包含,我觉得这很方便。