Bibtex 内部原理

Bibtex 内部原理

我想修改我的 bibtex 标题,这可以通过修改 \bibname 来实现。但是当涉及到减少标题“参考书目”和下面的条目之间的空间时,我想知道首先要放多少空间。

更一般地说,我很好奇 bibtex 内部是如何工作的。我似乎找不到任何关于此的文档。所以我的问题是:

  1. 在哪里可以找到有关 bibtex 如何格式化参考书目页面的信息?
  2. 更具体地说,什么决定了标题和下面条目之间的空间量?

答案1

BibTeX 的输出是一个.bbl包含thebibliography环境的文件。定义这个环境是文档类的职责。

通常是这样的

\section*{\refname}
\begin{list}{<code>}
<bib items>
\end{list}

对于没有章节的课程和

\chapter*{\bibname}
\begin{list}{<code>}
<bib items>
\end{list}

这可能根据加载的包而有所不同;例如natbib对此进行干预,但它使用\bibsection本质上等同于\section*\chapter*在上述情况下的宏。

texdef您可以使用命令行找到定义。例如,命令行

texdef -t latex -c article -s thebibliography

将输出

% article.cls, line 570:
\newenvironment{thebibliography}[1]
     {\section*{\refname}%
      \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%
      \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}}%
      \endlist}

修改它需要\makeatletter\makeatother

请注意,如果使用 case(或者其他包,也许),可能很难追踪实际定义natbib,因为它在 begin document 处重新定义了环境。但是,查看包代码会发现

\renewenvironment{thebibliography}[1]{%
 \bibsection
 \parindent\z@
 \bibpreamble
 \bibfont
 \list{\@biblabel{\the\c@NAT@ctr}}{\@bibsetup{#1}\global\c@NAT@ctr\z@}%
 \ifNAT@openbib
   \renewcommand\newblock{\par}%
 \else
   \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
 \fi
 \sloppy\clubpenalty4000\widowpenalty4000
 \sfcode`\.\@m
 \let\NAT@bibitem@first@sw\@firstoftwo
    \let\citeN\cite \let\shortcite\cite
    \let\citeasnoun\cite
}{%
 \bibitem@fin
 \bibpostamble
 \def\@noitemerr{%
  \PackageWarning{natbib}{Empty `thebibliography' environment}%
 }%
 \endlist
 \bibcleanup
}%

在两种情况下,更改标题和第一项之间的空格只是\vspace在之前插入合适的命令\list

相关内容