使用 biblatex,我想要得到以下两样东西:
- 引文后注中的缩写样式:\cite[42]{xyz} 应为“[1, p. 42]”而不是“[1, page 42]”。
- 参考书目中没有缩写:“2nd edition”而不是“2nd ed”。
默认情况下,我的观点 (1) 是正确的,但 (2) 不正确。使用 biblatex 时,如果使用选项“abbreviate=false”,我的观点 (2) 是正确的,但 (1) 不正确。
目前,我这样做:我使用“abbreviate = false”并定义我自己的 \pno 和 \ppno 命令,打印“page”和“pages”字符串的短版本:
\newcommand{\pnos}{\bibsstring{page}}
\newcommand{\ppnos}{\bibsstring{pages}}
然后我手动将它们添加到每个 \cite 的附注中。但我认为,可能有更好的方法,比如重新定义 \pno 和 \ppno,或者将整个文档的缩写设置为“abbreviate=true”,然后仅将参考书目设置为“false”。
不幸的是,我找不到实现这一目标的方法。
我将非常感谢您的建议!
注1:以下操作无效:
\renewcommand{\pno}{\bibsstring{page}}
结果是“LaTeX 错误:\pno 未定义”。
注 2:我的文档是德文的,因此我实际上用“S.”代替“p.”但这实际上没有什么区别。
答案1
您可以使用
\makeatletter
\AtBeginBibliography{\def\abx@str{abx@lstr}}
\makeatother
获取参考书目中的长字符串和引用中的短字符串(默认)。
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=authoryear, backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\makeatletter
\AtBeginBibliography{\def\abx@str{abx@lstr}}
\makeatother
\begin{document}
\cite[380]{sigfridsson}
\printbibliography
\end{document}