在我的文档中,我biblatex
使用一些给定的选项调用了该包(参见下面的 MWE)。包含所有给定选项的包(以及不属于我的问题的其他多个包)通过以下方式调用\input{...}
(未在下面显示,因为也不属于我的问题)并且必须调用(以便获得我的论文所需的所有包)。
是否可以biblatex
随后更改选项(在这种情况下将数字样式更改为 APA 样式)?
biblatex
取消注释其他选项的第二次调用会导致错误消息Option clash for package biblatex.
梅威瑟:
% !TeX program = lualatex
\documentclass{scrreprt}
\usepackage{filecontents}
\begin{filecontents}[overwrite]{Quellen.bib}
@book{Test:2023,
address = {Test Adress},
author = {Surname, Given Name},
editor = {Test Editor},
publisher = {Test Publisher},
title = {This is a Test Entry},
year = {2023},}
\end{filecontents}
%from here
\usepackage[%
backend=biber,
bibencoding=utf8,
style=numeric,
citestyle=numeric,
sorting=none,
defernumbers=true
]{biblatex}
\addbibresource{Quellen.bib}
%to here the entries can't be changed
%\usepackage[%
% backend=biber,
% bibencoding=utf8,
% style=apa,
% defernumbers=true
%]{biblatex}
\begin{document}
\cite{Test:2023}
\printbibliography
\end{document}
用例:我的用例如下:我有一组通常用于编写文档的软件包。对于某些必须编写的文档,我必须更改 biblatex 的选项,因为引用样式必须不同。如果可能的话,我希望保留此集合的当前状态,并按照上述要求更改选项。如果不可能,我将复制整个软件包集合,并在将要调用 biblatex 的位置手动更改选项(因此将 biblatex 调用的注释掉版本与当前调用版本进行交换)。由于(按照今天的情况)这只适用于我必须编写的一份文档,我认为后者更合适,不是吗?
答案1
正如解释的那样加载后设置 biblatex 选项加载后您可以使用它\ExecuteBibliographyOptions
来更改大多数选项。biblatex
但是,该style
选项不能用 来设置\ExecuteBibliographyOptions
。它需要在加载时设置,因为样式代码需要在序言中提供。
你可以看看\PassOptionsToPackage
(将选项应用于已加载的包\usepackage
),但因为/的选项\RequirePackage
优先于 中的选项\PassOptionsToPackage
,所以您必须biblatex
在输入文件中加载不受影响的选项,并且最终可能会在所有文档中出现\PassOptionsToPackage
(而不仅仅是少数需要biblatex
与通常设置不同样式的文档)。
您可以考虑将\input
文件变成一个包,它可以接受选项(以避免加载biblatex
或设置特定的biblatex
选项)。请参阅如何不在 TeX 文件中包括包?。
或者,您可以不加载biblatex
输入文件,而是始终将其明确加载到文档中。这是我首选的方法。在大多数情况下,我并不喜欢万能\input
文件。它们往往会积累大量不需要加载它们的每个文档的包(影响性能并产生不兼容风险)。通常最好只加载每个文档中实际需要的包。
答案2
您可以定义一个充当大小写切换驱动程序的宏,并将其设置在主文档中,这样当设置为 1 时,它会产生:
当设置为 2 时,它会产生:
这里\ifcase
使用语句来切换,但是其他方法也是可行的。
平均能量损失
% arara: lualatex
% arara: biber
% arara: lualatex
%\usepackage{filecontents}
\begin{filecontents}[overwrite]{Quellen.bib}
@book{Test:2023,
address = {Test Adress},
author = {Surname, Given Name},
editor = {Test Editor},
publisher = {Test Publisher},
title = {This is a Test Entry},
year = {2023},}
\end{filecontents}
\documentclass{scrreprt}
\newcommand\mybib{2}
\ifcase\mybib \or
%from here
\usepackage[%
% backend=biber,
% bibencoding=utf8,
style=numeric,
% citestyle=numeric,
% sorting=none,
defernumbers=true
]{biblatex}
%to here the entries can't be changed
\or
\usepackage[%
% backend=biber,
% bibencoding=utf8,
style=apa,
defernumbers=true
]{biblatex}
\fi
\addbibresource{Quellen.bib}
\begin{document}
\cite{Test:2023}
\printbibliography
\end{document}