我想取消参考文献中不同引用之间的换行符。通常,参考文献如下所示:
[1] aaa.
[2] bbb.
我正在寻找以下输出:
[1] aaa. [2] bbb.
这应该是一个相对简单的修复,但经过大量搜索,没有找到有效的解决方案。我正在使用已经编辑过的 ieeetr natbib 样式文件。
我看到一个output.bibitem
函数,内容是
FUNCTION {output.bibitem}
{ newline$
"\bibitem{" write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}
我尝试通过删除换行符$ 来编辑它以读取
FUNCTION {output.bibitem}
{
"\bibitem{" write$
cite$ write$
"}" write$
""
before.all 'output.state :=
}
然而,这并没有改变任何事情。
有什么解决办法吗?不是正在寻找一个需要 biblatex 的解决方案,而是恳求黑暗艺术直接编辑 .bst 文件的解决方案。
答案1
以下答案采用修改\bibitem
而不是编辑文件的方法.bst
。
换行符是由使用\item
内的 引起的\bibitem
,或者在 Natbib 中实际上是辅助宏\@lbibitem
。您可以修改代码以删除。这可以使用包中的宏\item
来完成。\patchcmd
etoolbox
在项目标签中,Natbib 执行一些管理操作,将引用键链接到正确的编号。修改后应保留此部分代码。具体来说,将代码从
\item[\hfil\NAT@anchor{#2}{\NAT@num}]
到
\NAT@anchor{#2}{\NAT@num}\space
和\patchcmd
:
\makeatletter
\patchcmd{\@lbibitem}{\item[\hfil\NAT@anchor{#2}{\NAT@num}]}{\NAT@anchor{#2}{\NAT@num}\space}{}{}
\makeatother
这已经起作用了,但是整个段落都缩进了。要纠正这个问题,你可以减少\labelsep
:
\setlength{\labelsep}{-1em}
完整 MWE:
\documentclass{article}
\usepackage[numbers]{natbib}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@lbibitem}{\item[\hfil\NAT@anchor{#2}{\NAT@num}]}{\NAT@anchor{#2}{\NAT@num}\space}{}{}
\makeatother
\begin{document}
\cite{manual-minimal,misc-full,misc-minimal}
\bibliographystyle{ieeetr}
\setlength{\labelsep}{-1em}
\bibliography{xampl}
\end{document}
结果:
请注意,此修改会导致警告:包 natbib 警告:输入行 24 上的“thebibliography”环境为空。这是因为仍然有一个枚举环境,但其中没有更多项目。为了以更干净的方式实现此更改,您还应该删除触发此警告的环境和检查 - 但对于结果而言,它似乎没有产生不利影响。