在首次调用 biblatex 选项后对其进行更改

在首次调用 biblatex 选项后对其进行更改

在我的文档中,我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 时,它会产生:

选项1

当设置为 2 时,它会产生:

选项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}

相关内容