多个书目和一个全局书目 - 均带有全局标签

多个书目和一个全局书目 - 均带有全局标签

我想要的是以下内容:
我有一个包含多个 的 tex 文件\sections,每个文件末尾都有自己的参考书目和自己的 bib 文件。在每个部分中,bib 文件的几个条目都是\cited,但我还在每个部分的末尾显示了所有本地参考书目条目。
文件末尾是一个全局参考书目,其中显示了所有本地参考书目的所有条目。

我已经尝试了不同的软件包,例如bibunitschapterbib(可以找到两者的链接这里)问题不在于在一个文档中生成多个书目,而在于标签。

本地书目条目的标签与全局书目中的相同。我尝试的软件包确实向我显示了本地和全局书目,但使用不同的标签。最后一部分让我感到困惑,因为文档中bibunits谈到了一个labelstoglobalaux应该这样做的选项。
顺便提一下,我使用带有 alpha.bst 标签的修改后的 plainnat.bst,即条目用作者姓名首字母和年份标记,而具有相同作者和年份的条目会在标签中添加一个字符。(在 MWE 中我使用 alpha.bst)我不想要编号标签。

这是我的 MWE 与bibunit包:

\documentclass{article}  
\usepackage[utf8]{inputenc} % Umlaut etc.  
\usepackage{amssymb}  
\usepackage{hyperref} % Link  
\usepackage[labelstoglobalaux,globalcitecopy]{bibunits} % seperate bibliographies  

\begin{document}  
\nocite{*} % to cite global bibliography

% local bibliographies
\begin{bibunit}[alpha]
\nocite{*}
\putbib[biblio-test1]
\end{bibunit}

\begin{bibunit}[alpha]
\nocite{*}
\putbib[biblio-test2]
\end{bibunit}

% global bibliography
\bibliographystyle{alpha}
\bibliography{biblio-test_all}

\end{document}

以及三个 bib 文件

书目测试1:

@phdthesis{222,
    author = {Author, Frank},
    title = {{A long title: Number 2}},
    school = {University T},
    year = {2011},
    pages = {III, 193},
    type={Dissertation},
    }

@phdthesis{333,
    author = {Author, Frank},
    title = {{A long title: number 3}},
    school = {University T},
    year = {2011},
    pages = {93},
    type={Dissertation},
    }

@inproceedings{123,
    author = {Bauthor, Bauth and Cauthor, Cauth},
    title = {{This is the title}},
    series = {A lovely series},
    volume = {109},
    booktitle = {A Long booktitel},
    editor = {Editor, Ed and Beditor, Bed},
    publisher = {Big Publisher},
    address = {City},
    year = {2010},
    pages = {746--851},
    }

书目测试2:

@book{573,
    author = {Name, N.},
    title = {{An introduction to something interesting}},
    pages = {9},
    publisher = {Big important company},
    address = {Hillcity},
    year = {2005},
    series = {Lecture notes},
    volume = {27/2005},
    url = {http://www.google.com/doodles/},
    }


@phdthesis{222,
    author = {Author, Frank},
    title = {{A long title: Number 2}},
    school = {University T},
    year = {2011},
    pages = {III, 193},
    type={Dissertation},
    }

@phdthesis{111,
    author = {Author, Frank},
    title = {{A long title: Number 1}},
    school = {University T},
    year = {2011},
    pages = {978},
    type={Dissertation},
    }

@phdthesis{233,
    author = {Author, Frank},
    title = {{Some other title}},
    school = {University T},
    year = {2009},
    pages = {3},
    type={Dissertation},
    }

biblio-test_all 包含 biblio-test1 和 biblio-test2 的条目,没有其他条目。

我最终得到的结果:三个书目,每个书目都有本地标签,例如,entry222 在一个书目 [Aut11a] 中,而在另一个书目 [Aut11b] 中。

非常感谢您的帮助或想法!

编辑 1:我编译

  • latex 书目测试
  • bibtex biblio-test(获取全球书目)
  • bibtex bu1
  • bibtex bu2
  • latex 书目测试
  • latex 书目测试

编辑 2:我有几个 bib 文件,因为 bib 文件是\section通过程序为每个生成的,每个文件最多有 100 个条目。
我可以将它们放在一个文件中,并使用 调用每个部分参考书目\nocite{...},然后我可以编写一个脚本,将每个部分参考书目条目复制到 中\nocite。但是,我尝试只使用一个 bib 文件,并使用 调用我需要的那些条目\nocite*{...}。但是:标签仍然不是全局的*。所以到目前为止,我还没有找到不使用单独文件的理由。

*当我引用 bibunit 中的条目时,引用中使用全局标签,但参考书目中使用本地标签。

答案1

这是一个biblatex满足您主要要求的解决方案——本地书目和全局书目相结合,并带有一致的本地/全局条目标签。但是,我使用全局文件(包括特殊字段来指示条目与一个或多个部分的从属关系),而不是.bib每个部分使用单独的文件。keywords

\documentclass{article}

\usepackage[style=alphabetic]{biblatex}

\defbibheading{subbibforsec}[\refname\ for section~\thesection]{%
    \subsection*{#1}}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@misc{A01,
  keywords = {foo,bar},
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
}
@misc{B02x,
  keywords = {foo},
  author = {Buthor, B.},
  year = {2002},
  title = {Bravo},
}
@misc{B02y,
  keywords = {bar},
  author = {Buthor, B.},
  year = {2002},
  title = {Bravissimo},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\nocite{*}

\begin{document}

\section{Foo}

Some text \autocite{B02x}.

\printbibliography[heading=subbibforsec,keyword=foo]

\section{Bar}

Some text \autocite{B02y}.

\printbibliography[heading=subbibforsec,keyword=bar]

\printbibliography

\end{document}

在此处输入图片描述

答案2

biblatex自从 lockstep 写了他们的答案后,情况有所改善。这是另一个解决方案这不需要你修改你的.bib文件


简短回答

refsegment为文档中需要单独参考书目的每个部分创建一个。然后,\printbibliography使用 选项将其限制在相关部分[segment=<# of the relevant segment>]。省略[segment=<#>]打印完整参考书目的选项。使用refsegments而不是refsection确保在文档的各个部分中拥有一致/唯一的标签。

要创建,refsegments请使用(结束前一个片段(如果需要)并开始一个新片段)或的全局选项(输入每个部分/章节/...)。请参阅下面的 MWE。\begin{refsegment}...\end{refsegment}\newrefsegmentbiblatexrefsegment=<part/chapter/section/subsection>\newrefsegment


长答案

不使用refsections(如 TeX.SE 上的大多数示例所示),“技巧”是使用refsegments。它们正是为此目的而设计的。事实上,正如biblatex文档中解释的那样(§3.7.5 参考书目段 - 粗体添加):

refsection 和 环境之间的区别 refsegment 在于,前者创建的标签是环境本地的,而后者为段过滤器提供了目标 \printbibliography 不影响标签。它们在整个文档中都是唯一的。

(换句话说:它会自动完成 lockstep 手动执行的操作)

如何创建refsegments

要创建refsegments,您有三个解决方案:

  • refsegment使用环境 ( )来界定相关部分\begin{refsegment}...\end{refsegment}
  • (如果需要:结束前一个片段并)用 开始一个新片段\newrefsegment
  • biblatex或者使用refsegment全局选项 (\usepackage[refsegment=]{biblatex})为每个部分/章节/节/小节自动启动一个新的 refsegment 。

如何打印本地书目?

要打印本地参考书目,您应该使用以下segment=<#>选项,其中#代表段的当前编号(如果尚未开始任何段,则为 0,第一个段后为 1 \newrefsegment,第二个段后为 2,等等...或\therefsegment打印当前参考段):

\printbibliography[段=1]

如何打印全球书目?

您只需省略该segment=<#>选项(即简单\printbibliography)。


平均能量损失

在此处输入图片描述

\documentclass{article}

    \usepackage[%
        style=alphabetic,
        refsegment=section,%<-- starts a new refsegment at each \section
    ]{biblatex}
        \defbibheading{subbibforsec}[\refname\ for section~\thesection]{\subsection*{#1}}

    \usepackage{filecontents}
        \begin{filecontents}{\jobname.bib}
            @misc{A01,
              author = {Author, A.},
              year = {2001},
              title = {Alpha},
            }
            @misc{B02x,
              author = {Buthor, B.},
              year = {2002},
              title = {Bravo},
            }
            @misc{B02y,
              author = {Buthor, B.},
              year = {2002},
              title = {Bravissimo},
            }
        \end{filecontents}
        \addbibresource{\jobname.bib}

\begin{document}
    \section{Foo}
        Some text \cite{A01,B02x}.
        \printbibliography[%
            heading=subbibforsec,
            segment=\therefsegment,%<-- restrict the bibliography to the current segment
        ]

    \section{Bar}
        Some text \cite{B02y}.
        \printbibliography[%
            heading=subbibforsec,
            segment=2,%<-- restrict the bibliography to the current segment
        ]

    \printbibliography
\end{document}

相关内容