我正在使用authoryear-icomp
样式并尝试隐藏页面前缀年代。在\autocite
s 处并用冒号替换它们。
然而,我越来越
假人(Heinrich 2013:S.197)
使用这个 MWE:
\documentclass[a4paper, 12pt]{article}
\usepackage[style=authoryear-icomp, isbn=false]{biblatex}
\addbibresource{\jobname.bib}
\DeclareDelimFormat{postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{\mknormrange{#1}}
\DeclareFieldFormat{multipostnote}{\mknormrange{#1}}
\usepackage[utf8]{inputenc}
\usepackage[babel, german=guillemets]{csquotes}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{titling}
\begin{filecontents}{\jobname.bib}
@book{Heinrich.2013,
author = {Heinrich, Michael},
year = {2013},
title = {Kritik der politischen {\"O}konomie: Eine Einf{\"u}hrung},
address = {Stuttgart},
edition = {11. Aufl.},
publisher = {Schmetterling-Verl.},
isbn = {3-89657-593-7},
series = {Reihe Theorie.org}
}
\end{filecontents}
\begin{document}
Dummy\autocite[S.~39]{Heinrich.2013}
\printbibliography
\end{document}
答案1
这个问题很好地说明了为什么建议在\cite
-like 命令的可选参数中给出后记/页面引用而不使用页面前缀:biblatex
如果需要,可以自动插入正确的前缀,但如果前缀已经给出,则很多如果不需要的话,就很难将其删除。
biblatex
没有从后记中删除的功能,这绝对应该在出口商方面得到修复:如果 Citavi 为 生成引文,则S.~
不应插入。S.~
biblatex
这是一个使用 LaTeX3 及其正则表达式函数自动剥离的解决方法S.~
。这只是最后的手段,输入应该是固定的。
\documentclass[a4paper, 12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[babel, german=guillemets]{csquotes}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[style=authoryear-icomp, isbn=false]{biblatex}
\usepackage{xparse}
\ExplSyntaxOn
\cs_new_protected_nopar:Npn \mknormrangeWithoutS:n #1
{
\tl_set:Nn \l_postnote_tl { #1 }
\regex_replace_once:nnN {\AS\.\~} {} \l_postnote_tl
\exp_args:No \mknormrange \l_postnote_tl
}
\NewDocumentCommand{\mknormrangeWithoutS}{m}{
\mknormrangeWithoutS:n { #1 }
}
\ExplSyntaxOff
\DeclareDelimFormat{postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{\mknormrangeWithoutS{#1}}
\DeclareFieldFormat{multipostnote}{\mknormrangeWithoutS{#1}}
\addbibresource{biblatex-examples.bib}
\begin{document}
Dummy \autocite[S.~39]{sigfridsson}
\printbibliography
\end{document}
答案2
以防万一有人遇到同样的问题:citavi 支持人员通知我前缀S.~
是硬编码的,无法停用。因此,@moewe 的脚本是必需的,并且完美地解决了这个问题。