按照在另一个文件中出现的顺序引用参考文献

按照在另一个文件中出现的顺序引用参考文献

假设我有一个文件 A.tex,它是主文档,并且有一个参考列表,比如说

[1] Reference 1
[2] Reference 2
[3] Reference 3
[4] Reference 4

还有 B.tex,它就像一封信,我希望能够在 B 中引用 A 中的一些参考文献,并保持与 A 中的顺序一致。例如,我想在 B 中引用 [2] 和 [4],并且还有参考文献列表

[2] Reference 2
[4] Reference 4

在 B 的末尾。这可能吗?如何实现?

答案1

这是一个使用的解决方案docmute包裹。

这个想法是将其他文档导入保存框中,但实际上不对其进行排版。为了能够仅打印我们实际主文档中引用的那些条目,我们必须使用 refsegment。为了确保所有defernumbers功能都能按预期工作,我们还始终打印其他文档中的参考书目,以确保编号正确。

\makeatletter
\defbibenvironment{plainimport}{}{}{}
\newsavebox{\importbox}
\newcommand{\importcites}[1]{%
  \sbox\importbox{\vbox{%
    \citetrackerfalse
    \begin{refsegment}
      \input{#1}
      \let\blx@anchor\@empty
      \printbibliography[env=plainimport,segment=\therefsegment]
    \end{refsegment}}}}
\makeatother

然后我们有一个命令,它获取我们要从中导入引文的文档\importcites的文件名。在主文件之后直接使用它。.tex\begin{document}

在示例中,设置\jobname.tex对应于您的文件 B,并且\jobname-ext.tex是文件 A。技术机制需要驻留在文件 B 中,文件 A 仅在 中提及\importcites。您必须使用(或)\printbibliography调用文件 B才能正常工作。如果省略参数,您还将看到文件 A 的引用。segment=\therefsegmentsegment=0segment

平均能量损失

\documentclass[british]{scrartcl}  
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=numeric,backend=biber,sorting=none,backref=true,defernumbers=true]{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage{docmute}

\usepackage{filecontents}
\begin{filecontents*}{\jobname-ext.tex}
\documentclass[british]{scrartcl}  
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=numeric,backend=biber,sorting=none]{biblatex}
\addbibresource{biblatex-examples.bib}

\begin{document}
\cite{sigfridsson} and \cite{geer} and \cite{worman} and \cite{cicero}
\end{document}
\end{filecontents*}

\makeatletter
\defbibenvironment{plainimport}{}{}{}
\newsavebox{\importbox}
\newcommand{\importcites}[1]{%
  \sbox\importbox{\vbox{%
    \citetrackerfalse
    \begin{refsegment}
      \input{#1}
      \let\blx@anchor\@empty
      \printbibliography[env=plainimport,segment=\therefsegment]
    \end{refsegment}}}}
\makeatother

\begin{document}
\importcites{\jobname-ext}
\cite{geer} and \cite{cicero}
\printbibliography[segment=\therefsegment]
\end{document}

示例输出

相关内容