更改BibTex的*.bbl输出文件的名称?

更改BibTex的*.bbl输出文件的名称?

这可能是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.bblpdflatex 第二遍(和第三遍)所需的必要文件。

这是我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

相关内容