这可能是XY问题,但我尝试从同一来源编译两个 PDF。一个包含练习,称为a.pdf
,另一个还包含答案,称为a-solutions.pdf
。
我在 Windows 上使用 TexStudio,并已成功使用以下配置创建了两个文件pdflatex
(为了示例而简化):
pdflatex.exe "\newif\ifsolutions\solutionsfalse\input{%.tex}" | pdflatex.exe "\newif\ifsolutions\solutionstrue\input{%.tex}" --jobname=%-solutions
基本上,我运行了pdflatex
两次,一次将布尔变量(solutions
)设置为 false,第二次将该变量设置为 true。
但是,我无法解析第二个文件的参考书目。我不知道如何创建a-solutions.bbl
pdflatex 第二遍(和第三遍)所需的必要文件。
这是我bibtex
在 TexStudio 中的当前配置:
bibtex.exe % | bibtex.exe %-solutions.aux
再次,我尝试运行两次:一次为a.pdf
,一次为a-solutions.pdf
。但是,只a.bbl
创建 。我怎样才能创建a-solutions.bbl
?
有可能解决这个问题吗?
笔记:理想情况下,我想要一个只需要修改我的 TexStudio 配置和/或我的源文件的解决方案。也就是说,我不想依赖外部工具或构建脚本。
答案1
问题中采取的一般方法是合理的,但bibtex
在 Windows 上不希望输入包含.aux扩展名。删除它即可解决问题。
为了完整性,这里有一个可以编译为两个不同 pdf 的 MWE(仅在 Windows 上使用 TexStudio 测试过)。此解决方案还采纳了 @gernot 提出的建议。
特克斯
\documentclass{article}
\usepackage{substr}
\IfSubStringInString{\detokenize{solutions}}{\jobname}
{\def\solutions{true}}
{\def\solutions{false}}%
\usepackage[solutions=\solutions]{exframe}
\begin{document}
\begin{problem}
Test \cite{ref1}.
\end{problem}
\begin{solution}
Solution \cite{ref2}.
\end{solution}
\bibliographystyle{plain}
\bibliography{refs}
\end{document}
参考文献
@misc{ref1,
author = {A},
title = {Ref 1.},
year = {}
}
@misc{ref2,
author = {B},
title = {Ref 2.},
year = {}
}
编译(在 TexStudio/Windows 上):
pdflatex
pdflatex.exe %.tex | pdflatex.exe %.tex --jobname=%-solutions
比博特
bibtex.exe % | bibtex.exe %-solutions