使用带有字母类别的 BibTeX

使用带有字母类别的 BibTeX

我正在尝试将 BibTeX 与字母一起使用;我希望这不会太奇怪。不过,字母类不支持 BibTeX。我发现 使用字母时环境 thebibliography undefined。但是,所描述的解决方案并不完美。参考书目出现在其自己的页面上(在我的情况下只有两个条目),并且编号与普通样式不符,即 [2] 出现在信中的 [1] 之前。

这些问题能修复吗?或者,我有什么选择?我可以使用其他字母类别吗?前段时间我发帖到 comp.text.tex,那里的人对字母类别相当鄙视,并向我指出了各种他们认为更好的替代方案。这些替代方案中是否有内置的 BibTeX 支持?

编辑1:上述两个问题都是用户错误。

  1. 正如约瑟夫所指出的,错误的顺序是因为我使用了该plain
    风格。

  2. 书目放在单独一页上是因为我把\bibliographystyle
    \bibliography条目放在了关闭letter环境之后而不是
    之前。再次,约瑟夫的例子帮助我理清了思路。

总而言之,原帖没有任何问题,尽管毫无疑问 Joseph 的版本有所改进,而且肯定更短。原版和 Joseph 的版本对我来说都很好用。我将 Joseph 帖子中的文本放在和之间,\makeatletter然后\makeatother将其放入单独的 sty 文件中,以便与我的信件一起使用。

编辑 2:添加\usepackage{natbib}到序言会破坏编译。无论我把它放在“自制”bib sty 文件之前还是之后都没有区别。我明白了

ERROR: LaTeX Error: Environment thebibliography undefined.

答案1

按照课堂上的定义article,我得到了很好的结果

\begin{filecontents}{letter.bib}
@article{First,
  author  = "Other, A. N.",
  title   = "Some things {I} did",
  journal = "J. Irreproducible Results",
  year    = "2011"
}

@article{Second,
  author  = "Aaa, S{\o}mebloke",
  title   = "Tigers",
  journal = "Ann. Improbable Res.",
  year    = "2011"
}
\end{filecontents}

\documentclass{letter}
\makeatletter
\newenvironment{thebibliography}[1]
     {\list{\@biblabel{\@arabic\c@enumiv}}%
           {\settowidth\labelwidth{\@biblabel{#1}}%
            \leftmargin\labelwidth
            \advance\leftmargin\labelsep
            \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}}%
      \endlist}
\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
\makeatother
\begin{document}
\begin{letter}{Some person}
\opening{Hello}

Some text \cite{First}, more text \cite{Second}.

\bibliographystyle{unsrt}
\bibliography{letter}

\end{letter}
\end{document}

我在这里使用了unsrt样式,将plain参考文献按字母顺序排列,而不是按引用顺序排列。我还修改了定义,删除了与章节相关的内容,因为这似乎与信件无关。(我还删除了与课程选项thebiliography相关的代码,同样因为它似乎不相关。)openbibarticle


问题的第二次编辑询问有关natbib。对我来说,如果我natbib在定义后加载thebiliography并且如果我使\bibsection“安全”,则此方法有效:

\begin{filecontents}{letter.bib}
@article{First,
  author  = "Other, A. N.",
  title   = "Some things {I} did",
  journal = "J. Irreproducible Results",
  year    = "2011"
}

@article{Second,
  author  = "Aaa, S{\o}mebloke",
  title   = "Tigers",
  journal = "Ann. Improbable Res.",
  year    = "2011"
}
\end{filecontents}

\documentclass{letter}
\makeatletter
\newenvironment{thebibliography}[1]
     {\list{\@biblabel{\@arabic\c@enumiv}}%
           {\settowidth\labelwidth{\@biblabel{#1}}%
            \leftmargin\labelwidth
            \advance\leftmargin\labelsep
            \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}}%
      \endlist}
\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
\makeatother
\usepackage[numbers]{natbib}
\let\bibsection\relax
\begin{document}
\begin{letter}{Some person}
\opening{Hello}

Some text \cite{First}, more text \cite{Second}.

\bibliographystyle{unsrtnat}
\bibliography{letter}

\end{letter}
\end{document}

答案2

我遇到了同样的问题,我认为我找到了一个更优雅、更广泛的解决方案。

的开发者komascript.de提供一个scrartcl与标准文章类基本相同的类,但允许集成字母。其妙处在于,您不仅可以打印参考书目,还可以使用文章类中可能遗漏的部分和其他工具。一个实际示例:

\begin{filecontents}{letter.bib}
@article{First,
  author  = "Other, A. N.",
  title   = "Some things {I} did",
  journal = "J. Irreproducible Results",
  year    = "2011"
}

@article{Second,
  author  = "Aaa, S{\o}mebloke",
  title   = "Tigers",
  journal = "Ann. Improbable Res.",
  year    = "2011"
}
\end{filecontents}

\documentclass{scrartcl}
\usepackage{scrletter}
\usepackage[numbers]{natbib}
\usepackage{lipsum}

\begin{document}
\setkomavar{fromname}{Name of Sender}
\setkomavar{fromaddress}{Address of Sender}
\begin{letter}{Name of Recipient\\Address of Recipient}
  \opening{Dear Recipient,}

  \section{Interesting Stuff}
  The first~\cite{First} citation.
  \lipsum%

  \section{Another Citation}
  And the second~\cite{Second} citation.

  \closing{Yours sincerely,}

  \bibliographystyle{unsrtnat}
  \bibliography{letter}
\end{letter}
\end{document}

相关内容