防止 Natbib 在 \bibitem 之后立即在 \hbox 后插入换行符

防止 Natbib 在 \bibitem 之后立即在 \hbox 后插入换行符

如果我\hbox to \dimen在之后使用\bibitem,natbib 似乎会调用 par 中断。有没有办法避免这种情况,或者以任何其他方式将破折号后的文本与其他 bibitem 对齐?

梅威瑟:

\documentclass[ngerman]{article}
\usepackage{natbib}

\bibhang=2em\relax
\begin{document}
\begin{thebibliography}{99}
\bibitem[Herzer(1992)]{bib-01}Herzer, Manfred (1992), Magnus Hirschfeld. Leben und Werk eines jüdischen, schwulen und sozialistischen Sexologen, Frankfurt am Main.
\bibitem[Herzer(1997)]{bib-02}\hbox to \bibhang{---} (1997), Das Wissenschaftlich-humanitäre Komitee, in: Goodbye to Berlin --- 100 Jahre Schwulenbewegung, hg. v. Schwulen Museum/Akademie der Künste, Berlin, S.~83–87.Hewitt, Andrew (1996), Political Inversions. Homosexuality, Fascism, and the Modernist Imaginary, Stanford, CA.
\end{thebibliography}
\end{document}

结果:

MWE 运行的屏幕截图

答案1

当您使用 时\hbox,TeX 会将其附加到正在构建的当前列表中。如果您处于水平模式(在段落中),TeX 会将 附加\hbox到水平列表中,使其成为当前段落的一部分(这就是您想要的)。但是如果您处于垂直模式,那么 TeX 会将其附加\hbox到当前垂直列表中,或多或少类似于它对段落中的一行所做的操作(这就是您正在做的事情),因此看起来 仍然位于\hbox它自己的段落中。

在普通 TeX 中,解决方案是使用 强制启动水平模式\leavevmode,然后确保 TeX 将 放在\hbox水平列表中。在 LaTeX(您可以使用\leavevmodebut)中,您应该改用\makebox

\documentclass[ngerman]{article}
\usepackage{natbib}

\bibhang=2em\relax
\begin{document}
\begin{thebibliography}{99}
\bibitem[Herzer(1992)]{bib-01}Herzer, Manfred (1992), Magnus Hirschfeld. Leben und Werk eines jüdischen, schwulen und sozialistischen Sexologen, Frankfurt am Main.
\bibitem[Herzer(1997)]{bib-02}\makebox[\bibhang][c]{---}(1997), Das Wissenschaftlich-humanitäre Komitee, in: Goodbye to Berlin --- 100 Jahre Schwulenbewegung, hg. v. Schwulen Museum/Akademie der Künste, Berlin, S.~83–87.Hewitt, Andrew (1996), Political Inversions. Homosexuality, Fascism, and the Modernist Imaginary, Stanford, CA.
\end{thebibliography}
\end{document}

相关内容