包含一些特定条目的书目,独立于全局书目

包含一些特定条目的书目,独立于全局书目

我有一篇很长的文档,末尾有一个(单个)参考书目。出于某种原因,我在中间的某个地方引用了 3 个来源,我需要当场排版它们的参考书目条目。我该怎么做?

我正在使用bibtex,但没有biblatex。 (目前。)

我还要提到,这些恰好是某个中的唯一引用\chapter*,因此基于章节参考书目的解决方案是相关的,尽管这并不是我想要的。

答案1

如果引用的来源也出现在最终的参考书目中,则此方法有效;只有在生成完整的参考书目后,它们才会出现,因为我们阅读的是同一个.bbl文件。

该命令\partialcites将最宽的标签作为第一个参数(恐怕自动计算它会相当困难),并将您需要的引用键作为第二个参数。

\documentclass{article}
\usepackage{xstring}

\makeatletter
\newcommand{\partialcites}[2]{%
  \begingroup
  \let\etalchar\@undefined
  \def\thebibliography##1{%
    \list{\@biblabel{\@arabic\c@enumiv}}%
      {\settowidth\labelwidth{\@biblabel{#1}}%
       \leftmargin\labelwidth
       \advance\leftmargin\labelsep
       \@openbib@code
       \usecounter{enumiv}%
       \let\p@enumiv\@empty
       \renewcommand\theenumiv{\@arabic\c@enumiv}}%
     \sloppy
     \clubpenalty4000
     \@clubpenalty \clubpenalty
     \widowpenalty4000%
     \sfcode`\.\@m}
     {\def\@noitemerr
       {\@latex@warning{Empty `thebibliography' environment}}%
  }
  \let\endthebibliography\endlist
  \def\bibitem[##1]##2##3\par{\IfSubStr{,#2,}{,##2,}{\item[\cite{##2}]##3}{}}%
  \@input{\jobname.bbl}%
  \endgroup}
\makeatother

\begin{document}

\partialcites{AFKS00}{key1,key2}

\nocite{*}
\bibliographystyle{alpha}
\bibliography{mybib}

\end{document}

限制: 的参数\partialcites在逗号周围不能有空格。子字符串的问题其实很容易解决。

答案2

您应该使用bibentry.sty,它的设计就是为了完成您想要做的事情。

答案3

egreg 的早期解决方案,包含 egreg 的一些调整/想法/建议:

  • 支持“alpha”风格(可能还有很多其他与plain不同的风格)。
  • 允许在主要参考书目之后使用该命令。
  • 一个有点丑陋的黑客支持引用键彼此作为子字符串。

\documentclass{article}
\usepackage{xstring}

\makeatletter
\newcommand{\partialcites}[1]{%
  \begingroup
  \let\etalchar\@undefined
  \def\thebibliography##1{\begin{itemize}}%
  \def\endthebibliography{\end{itemize}}%
  % for plain style
  %\def\bibitem##1##2\par{\IfSubStr{#1}{##1}{\item[\cite{##1}]##2}{}}%
  \def\bibitem[##1]##2##3\par{\IfSubStr{,#1,}{,##2,}{\item[\cite{##2}]##3}{}}%
  \@input{\jobname.bbl}%
  \endgroup}
\makeatother
\begin{document}

\partialcites{AB,CD}

Now for a real cite. \cite{AB}. \cite{CD}.

%\nocite{*}
%\bibliographystyle{plain}
\bibliographystyle{alpha}
\bibliography{mybib}

\end{document}

相关内容