Biblatex 在使用 Citavi 出版向导时抑制页面前缀 S。

Biblatex 在使用 Citavi 出版向导时抑制页面前缀 S。

我正在使用authoryear-icomp样式并尝试隐藏页面前缀年代。\autocites 处并用冒号替换它们。

然而,我越来越

假人(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}

假人(Sigfridsson und Ryde 1998: 39)

答案2

以防万一有人遇到同样的问题:citavi 支持人员通知我前缀S.~是硬编码的,无法停用。因此,@moewe 的脚本是必需的,并且完美地解决了这个问题。

相关内容