正在运行latex
并bibtex
循环
\documentclass{article}
\pagestyle{empty}
\begin{filecontents}[overwrite]{mwe.bib}
@article{Types,
author={Abra K. Dabra},
title={Types in Programming: {Bool}, {Char}, {Int}},
journal={Int. J. Comp.},
OPTyear=2000
}
\end{filecontents}
\showoutput
\begin{document}
\cite{Types}
\bibliographystyle{acm}
\bibliography{mwe}
\end{document}
产量
[1]
参考
[1] Dᴀʙʀᴀ,AK 编程中的类型:Bool,Char,Int。国际计算机杂志。
倒数第二个句号是斜体,最后一个句号是直立的。这个不太明显。acm
如果缺少年份,有什么方法可以修复样式以删除最后一个句号?这个类很老了,是 1986 年的,最后一次更正是在 2010 年,所以可能有一个标准修复。
答案1
条目末尾的句号(与参考书目中的大多数其他句号一样)由 生成add.period$
。
根据驯服野兽 add.period$
在字符串 S 的末尾添加一个句点,除非 S 已经以句点、感叹号或问号结尾(删除右括号后);
但不幸的是,使用函数acm
打印,该函数定义为journal
emphasizeic
FUNCTION {emphasizeic}
{ duplicate$ empty$
{ pop$ "" }
{ "{\em " swap$ * "\/}" * }
if$
}
因此,即使删除任何右括号,堆栈中的字符{\em Int. J. Comp.\/}
也不会以句号结尾。这意味着add.period$
会添加另一个句号。
幸运的是,大约三十年来一直有一个解决方案:使用\emph{...}
而不是{\em ...}
。
因此,我将修改一份副本acm.bst
来替换所有类似
"{\em " ... * "\/}"
或者
"{\em " ... * "}"
类似于
"\emph{" ... * "}"
对于本例来说,只有一个这样的实例很重要,即 中的那个emphasizeic
,但我们既然已经这样做了,不妨改变其他的。这是diff
原始的acm.bst
和acm-emph.bst
--- acm.bst 2010-12-09 04:09:07.000000000 +0100
+++ acm-emph.bst 2024-02-25 09:45:26.932302800 +0100
@@ -1,3 +1,7 @@
+%%%% ACM with \emph{...} instead of {\em ...}
+%%%% 2024-02-25 MW
+%%%% for https://tex.stackexchange.com/q/710339/35864
+%%%% replace instances of "{\em " ... * "\/}" with "\emph{" ... * "}"
% Copyright (C) 1986, 1988, 2010 Howard Trickey and Oren Patashnik.
% Unlimited copying and redistribution of this file are permitted as long as
% it is unmodified. Modifications (and redistribution of modified versions)
@@ -167,14 +171,14 @@
FUNCTION {emphasize}
{ duplicate$ empty$
{ pop$ "" }
- { "{\em " swap$ * "}" * }
+ { "\emph{" swap$ * "}" * }
if$
}
FUNCTION {emphasizeic}
{ duplicate$ empty$
{ pop$ "" }
- { "{\em " swap$ * "\/}" * }
+ { "\emph{" swap$ * "}" * }
if$
}
@@ -546,7 +550,7 @@
warning$
""
}
- { "In {\em " journal * "\/}" * }
+ { "In \emph{" journal * "}" * }
if$
}
{ "In " key * }
@@ -589,7 +593,7 @@
crossref * warning$
"" *
}
- { "{\em " * series * "\/}" * }
+ { "\emph{" * series * "}" * }
if$
}
{ key * }
@@ -610,7 +614,7 @@
crossref * warning$
""
}
- { "In {\em " booktitle * "\/}" * }
+ { "In \emph{" booktitle * "}" * }
if$
}
{ "In " key * }
和acm-emph.bst
\documentclass{article}
\pagestyle{empty}
\begin{filecontents}{\jobname.bib}
@article{Types,
author={Abra K. Dabra},
title={Types in Programming: {Bool}, {Char}, {Int}},
journal={Int. J. Comp.},
OPTyear=2000,
}
\end{filecontents}
\begin{document}
\cite{Types}
\bibliographystyle{acm-emph}
\bibliography{\jobname}
\end{document}
生产