BibLaTeX/Biber

BibLaTeX/Biber

这个问题导致了一个新的方案的出现:
xcite

我想引用其他文件中的引文。与xr package标签的操作类似,但我想将其应用于参考书目。

如果我可以\cite{someone}在主文件中执行此操作,并且它会创建数字 [4],那么我想在第二个文件中执行相同操作,并创建相同的数字 [4]。与标签的操作\cite{someone}类似。xr

顺便说一句,我尝试main.bbl从主文件添加文件。但是,这会将所有引用添加到第二个文件的末尾。我想避免这种情况。

有没有什么包可以实现这个功能?

答案1

将以下内容保存在您的工作目录中xc.sty

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{xc}
         [2011/09/02 v0.1 eXternal Citations (DPC+EG)]
\def\externalcitedocument{\@ifnextchar[\XC@{\XC@[]}}
\def\XC@[#1]#2{{%
  \makeatletter
  \def\XC@prefix{#1}%
  \XC@next#2.aux\relax\\}}
\def\XC@next#1\relax#2\\{%
  \edef\XC@list{#2}%
  \XC@loop{#1}}
\def\XC@aux{%
  \ifx\XC@list\@empty\else\expandafter\XC@explist\fi}

\def\XC@explist{\expandafter\XC@next\XC@list\\}
\def\XC@loop#1{\openin\@inputcheck#1\relax
  \ifeof\@inputcheck
    \PackageWarning{xc}{^^JNo file #1^^JLABELS NOT IMPORTED.^^J}%
    \expandafter\XC@aux
  \else
    \PackageInfo{xc}{IMPORTING LABELS FROM #1}%
    \expandafter\XC@read\fi}
\def\XC@read{%
  \read\@inputcheck to\XC@line
  \expandafter\XC@test\XC@line...\XC@}
\long\def\XC@test#1#2#3#4\XC@{%
  \ifx#1\bibcite
    \bibcite{\XC@prefix#2}{#3}%
  \else\ifx#1\@input
     \edef\XC@list{\XC@list#2\relax}%
  \fi\fi
  \ifeof\@inputcheck\expandafter\XC@aux
  \else\expandafter\XC@read\fi}

\endinput
%%
%% End of file `xc.sty'.

derived.tex然后在你的文档中说,

\externalcitedocument{main}

main.tex你引用的文献在哪里?)现在

\cite{xyz}

将会derived.tex做你想做的事。

界面与負責's:你也可以指定前缀

\externalcitedocument[A-]{main}

\cite{A-xyz}在 中使用derived.tex

该文件是通过一些非常简单的转换xc.sty获得的:xr.sty

  1. xr->xc
  2. XR->XC
  3. \externaldocument->\externalcitedocument
  4. \newlabel->\bibcite

答案2

BibLaTeX/Biber

该软件包xcite现在是xr如果您使用 ,它就会按照您想要的方式工作bibtex。如果您使用BibLaTeX/ Biber,则参考书目不会使用\bibitems 进行编译。

相反,您可以先编译主文档和派生文档,然后简单地复制main.bbl并重命名它derived.bbl。重新编译派生文档,跳过Biber这次,您将获得与主文档中编号相同的参考文献。

这种手动方法的缺点是您总是需要记住复制主要参考书目文件,而它xr会自动为您处理所有事情。

相关内容