我有一个关于在引用中用“Sp”代替“S”的问题。例如,
XXX,Y. (ABCD)。YYY。在 Y. XXX。(编辑),FGAH。(A. 编辑,S. 01-03)。VVVV:ZZZZ。
我想获得以下参考:
XXX,Y. (ABCD)。YYY。在 Y. XXX。(编辑),FGAH。(A. ed.,Sp. 01-03)。VVVV:ZZZZ。
我怎样才能将仅有两个条目的页码从“S.”更改为“Sp.”?
这是一个简单的例子:
\documentclass{scrbook}
\pagestyle{plain}
\usepackage[utf8]{inputenc}
\usepackage[english,ngerman]{babel}
\usepackage[natbibapa]{apacite}
\author{XX} \title{YYY}
\begin{document}
\maketitle
\citep{Example1}
\bibliographystyle{apacite}
\bibliography{test}
\end{document}
bib 文件 (test.bib) 包含以下条目:
@inbook{Example1,
author = {XXX, Y},
title = {YYY},
booktitle = {FGAH},
editor = {XXX, Y},
publisher = {ZZZZ},
address = {VVVV},
edition = {A.},
pages = {01-03},
year = {ABCD},
}
非常感谢您提供任何解决方案!
答案1
鉴于您似乎只需要对两个条目使用“Sp.”而不是“S.”,那么编辑参考书目样式文件来执行以下操作似乎不太明智:apacite.bst
(a)创建一个名为 的新条目类型@inencyclopedia
,(b)创建至少两个新函数来生成新外观,以及(c)将相关条目从 重命名@inbook
为@inencyclopedia
。
相反,我建议您执行以下操作:
apacite
使用(通过再运行 LaTeX、BibTeX 和 LaTeX 两次)创建参考书目后,\jobname.bbl
在您最喜欢的文本编辑器中打开该文件 - 您用于 .tex 文件的编辑器就可以了 - 然后找到\bibitem
命名的Example1
(或任何真正的密钥)。往下几行,你会看到如下一行:
\BPG~01-03).
将其更改为
Sp.~01--03).
对另一个有问题的条目重复此操作。
保存 .bbl 文件并再次运行 LaTeX(但不是 BibTeX!)。
我认为这种方法的唯一缺点是您必须记住在重新运行 BibTeX 后重新应用这些编辑。
答案2
评论
唯一要做的就是将两个控制序列从 中更改german.apc
。请注意,这现在是全局的。我看不出有什么办法可以区分不同的引用。此外,您还需要将其括在 中\AtBeginDocument{...}
,因为发出时apacite
会加载文件。german.apc
\begin{document}
执行
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{test.bib}
@inbook{Example1,
author = {XXX, Y},
title = {YYY},
booktitle = {FGAH},
editor = {XXX, Y},
publisher = {ZZZZ},
address = {VVVV},
edition = {A.},
pages = {01-03},
year = {ABCD},
}
\end{filecontents}
\pagestyle{empty}
\usepackage[utf8]{inputenc}
\usepackage[english,ngerman]{babel}
\usepackage[natbibapa]{apacite}
% Needs to appear after \usepackage{apacite}
\AtBeginDocument{
% Extracted from german.apc
\renewcommand{\BPG}{Sp.\hbox{}}
\renewcommand{\BPGS}{Sp.\hbox{}}
}
\begin{document}
\citep{Example1}
\bibliographystyle{apacite}
\bibliography{test}
\end{document}