如何减少参考书目中单词之间的空白?它似乎试图将内容拉长以适合列。例如:
以下是测试文档:
% test.tex
\title{Article Title}
\author{Some Author}
\documentclass[12pt, a4paper, twocolumn]{article}
\usepackage[super,comma,sort&compress]{natbib}
\begin{filecontents}{test.bib}
@misc{LinkReference1,
author = {Xxxxxxxxxx, Xxxxx},
title = {Xxxxx-xxxxx Xxxxxxxxxxxxxx: Xxxxxx Xxxx},
}
\end{filecontents}
\begin{document}
\maketitle
\section{Section1Title}
Hello World.
\nocite{*}
\bibliographystyle{plain}
\bibliography{test}
\end{document}
% Create PDF on Linux:
% FILE=test; pkill -9 -f ${FILE} &>/dev/null; rm -f ${FILE}*aux ${FILE}*bbl ${FILE}*bib ${FILE}*blg ${FILE}*log ${FILE}*out ${FILE}*pdf &>/dev/null; pdflatex -halt-on-error ${FILE}; bibtex ${FILE} && pdflatex ${FILE} && pdflatex ${FILE} && (xdg-open ${FILE}.pdf &)
答案1
许多.bst
样式使用命令\newblock
来分隔(较大的)信息块。在示例中,文件将在作者姓名后面以红色标记的位置直接.bbl
包含一个。\newblock
\bibitem{LinkReference1}
Xxxxx Xxxxxxxxxx.
\newblock Xxxxx-xxxxx xxxxxxxxxxxxxx: Xxxxxx xxxx.
\newblock
请注意,前面也有一个正常空格(或在本例中为换行符) 。
标准类定义
\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
这意味着插入了一个额外的(相当)可拉伸的空间\newblock
。
natbib
,您使用的也有
\renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}
但是该定义在里面thebibliography
,这意味着如果您想修改,\newblock
您必须重新定义thebibliography
或在环境内工作(例如通过手动修改文件或与在环境内执行命令的文件一起.bbl
使用[有一些这样做,但大多数样式在之前执行])。@preamble
.bst
@preamble
@preamble
\begin{thebibliography}
在您的例子中
\makeatletter
\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{}%
\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
}%
\makeatother
会删除 插入的额外空格\newblock
。但间距并没有变好
可以说,情况变得更糟,因为构成一个单位的名字和姓氏之间,与名字和头衔之间的空格是一样的。
即使在最好的情况下,参考书目中的换行也很难(名称和技术术语可能很难正确连字符,URL 使事情变得复杂,......),但在双列模式下,情况会变得更加困难,因为可用空间比平时小得多。因此,预计需要稍微拉伸和压缩空间才能完全对齐。
在这种情况下,值得考虑将参考书目设置为右对齐,即关闭对齐。例如,参见如何防止引用的自动对齐?。LaTeX 将停止拉伸空间,但文本不会在行尾对齐。由于参考书目是列表形式,并且可能有大量行不符合右边距,因此视觉效果不会像正常的流动文本段落那样大。
\documentclass[12pt, a4paper, twocolumn]{article}
\usepackage[super,comma,sort&compress]{natbib}
%\usepackage{filecontents}
\begin{filecontents}{test.bib}
@misc{LinkReference1,
author = {Xxxxxxxxxx, Xxxxx},
title = {Xxxxx-xxxxx Xxxxxxxxxxxxxx: Xxxxxx Xxxx},
}
\end{filecontents}
\renewcommand*{\bibfont}{\raggedright}
\begin{document}
Hello World.
\nocite{*}
\bibliographystyle{plain}
\bibliography{test}
\end{document}
总体效果更令人满意
如果你喜欢在不规则的右侧文本中使用连字符,你可能需要研究一下ragged2e
的\RaggedRight
。
答案2
作为moewe 指出,当使用时natbib
,必须在环境\newblock
内重新定义thebibliography
。一个相对简单的解决方案就是这样做:
\let \thebibliographyorig \thebibliography
\renewcommand{\thebibliography}[1]{%
\thebibliographyorig{#1}%
\renewcommand{\newblock}{}%
}