带数字的一段式参考书目

带数字的一段式参考书目

我正在写一篇限制为两页的文档。我试图找到一种方法,使参考书目中的每个引文不从新行开始。这样就足以满足我的页数限制。

我使用 natbib 和 bibtex 的“超级”(自然风格)引用选项。我尝试了在

单段式参考书目

以获得此行为。当与作者年份样式的引用一起使用时,它可以正常工作,但与 super(数字)选项一起使用时会产生尴尬的缩进(请参阅下面条目之间的非均匀间距):

在此处输入图片描述

有谁知道如何配置,以便参考书目中的条目看起来像这样齐平:

在此处输入图片描述

但是用数字代替了文中引用的每个参考资料中的点?

谢谢!

编辑:

我使用以下命令调用 natbib:

\usepackage[super,sort&compress]{natbib}

然后调用:

\bibliographystyle{apj_w_etal_3auth}

\usepackage{paralist}

\renewenvironment{thebibliography}[1]{%
\textsc{\textbf{References:}}
\let\par\relax\let\newblock\relax%
\inparaitem[{[}1{]}]}{\endinparaitem}

以下是样式文件:

https://gist.github.com/dannygoldstein/b8f77d3e4853ec983209aa8850898fb2

注意,这是略微修改的版本https://github.com/keflavich/tex_compact_bib。我从原始 bst 文件中删除了“SORT”命令,以使引用不按字母顺序显示。

答案1

解决方案简介

\hfils的参数中实际\item呈现双项的负责水平空白。

bibitems 的渲染由命令完成 \@lbibitem。因此,我们需要重新定义它。一种方法是使用 \renewcommand。但毫无疑问,更聪明的方法是使用 \patchcmd

\usepackage{etoolbox}
\makeatletter
\patchcmd{\@lbibitem}{\item[\hfil\NAT@anchor{#2}{\NAT@num}]}{\item[\NAT@anchor{#2}{\NAT@num}]}{}{}
\makeatother

完整代码

\documentclass{article}

\bibliographystyle{apj_w_etal_3auth}

\usepackage[super,sort&compress]{natbib}

\usepackage{paralist}

\renewenvironment{thebibliography}[1]{%
\textsc{\textbf{References:}}
\let\par\relax\let\newblock\relax%
\inparaitem[{[}1{]}]}{\endinparaitem}

\usepackage{times}

\usepackage{etoolbox}
\makeatletter
\patchcmd{\@lbibitem}{\item[\hfil\NAT@anchor{#2}{\NAT@num}]}{\item[\NAT@anchor{#2}{\NAT@num}]}{}{}
\makeatother

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@article{einstein,
    author =       "Albert Einstein",
    title =        "{Zur Elektrodynamik bewegter K{\"o}rper}. ({German})
        [{On} the electrodynamics of moving bodies]",
    journal =      "Annalen der Physik",
    volume =       "322",
    number =       "10",
    pages =        "891--921",
    year =         "1905",
    DOI =          "http://dx.doi.org/10.1002/andp.19053221004"
}

@book{latexcompanion,
    author    = "Michel Goossens and Frank Mittelbach and Alexander Samarin",
    title     = "The \LaTeX\ Companion",
    year      = "1993",
    publisher = "Addison-Wesley",
    address   = "Reading, Massachusetts"
}

@article{belloche2014detection,
  title={Detection of a branched alkyl molecule in the interstellar medium: iso-propyl cyanide},
  author={Belloche, Arnaud and Garrod, Robin T and M{\"u}ller, Holger SP and Menten, Karl M},
  journal={Science},
  volume={345},
  number={6204},
  pages={1584--1587},
  year={2014},
  publisher={American Association for the Advancement of Science}
}

@article{mcnally1989anxiety,
  title={Is anxiety sensitivity distinguishable from trait anxiety? Reply to Lilienfeld, Jacob, and Turner (1989).},
  author={McNally, Richard J},
  year={1989},
  publisher={American Psychological Association}
}

\end{filecontents}

\begin{document}

\nocite{*}

\bibliography{\jobname}

% \show\bibitem

% \makeatletter
% \show\@lbibitem
% \makeatother

\end{document}

输出

在此处输入图片描述


侦探活动

检查 .bbl 文件可发现,每个书目条目均由 呈现\bibitem

因此,我们\show\bibitem在源内发出一个。这将给出:

\bibitem=\long 宏:->\@ifnextchar [{\@lbibitem }{\@lbibitem []}。

我们深入探究并观察内部情况\@lbibitem

\makeatletter
\show\@lbibitem
\makeatother

给出:

\@lbibitem=macro:
[#1]#2->\if \relax \@extra@b@citeb \relax \else \@ifundefined {br@#2\@extra@b@c
iteb }{}{\@namedef {br@#2}{\@nameuse {br@#2\@extra@b@citeb }}}\fi \@ifundefined
 {b@#2\@extra@b@citeb }{\def \NAT@num {}}{\NAT@parse {#2}}\def \NAT@tmp {#1}\ex
pandafter \let \expandafter \bibitemOpen \csname NAT@b@open@#2\endcsname \expan
dafter \let \expandafter \bibitemShut \csname NAT@b@shut@#2\endcsname \@ifnum {
\NAT@merge >\@ne }{\NAT@bibitem@first@sw {\@firstoftwo }{\@ifundefined {NAT@b*@
#2}{\@firstoftwo }{\expandafter \def \expandafter \NAT@num \expandafter {\the \
c@NAT@ctr }\@secondoftwo }}}{\@firstoftwo }{\global \advance \c@NAT@ctr \@ne \@
ifx {\NAT@tmp \@empty }{\@firstoftwo }{\@secondoftwo }{\expandafter \def \expan
dafter \NAT@num \expandafter {\the \c@NAT@ctr }\global \NAT@stdbsttrue }{}\bibi
tem@fin \item [\hfil \NAT@anchor {#2}{\NAT@num }]\global \let \NAT@bibitem@firs
t@sw \@secondoftwo \NAT@bibitem@init }{\NAT@anchor {#2}{}\NAT@bibitem@cont \bib
item@fin }\@ifx {\NAT@tmp \@empty }{\NAT@wrout {\the \c@NAT@ctr }{}{}{}{#2}}{\e
xpandafter \NAT@ifcmd \NAT@tmp (@)(@)\@nil {#2}}.

我必须说,这个名字有点拗口,而且有点难以理解。因此,我们natbib.sty在编辑器中打开文件并搜索\@lbibitem

随后的几行显示了书目条目的呈现方式。

\item[\hfil\NAT@anchor{#2}{\NAT@num}]

引起了我们的怀疑,并对此进行了调整,证实我们已经找到了正确的点。


进一步阅读

如果您想了解更多信息 \patchcmd,请查看此精彩答案

相关内容