BibLaTeX 括号后的标点符号

BibLaTeX 括号后的标点符号

如果文章标题以.)逗号结尾,则后面应该跟的逗号不存在。如果只有一个右括号,则后面也有逗号。请参见下面的屏幕截图。

该如何修复?\DeclarePunctuationPairs{<identifier>}{<characters>}由于该部分不允许使用括号,所以不起作用character

梅威瑟:

\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage[french, english]{babel}
\usepackage[backend=biber,
  bibstyle=ext-authoryear,
  articlein=false,
]{biblatex}
  \addbibresource{TEST-Bib-Sorting.bib}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\renewcommand*{\newunitpunct}{\addcomma\space}

\newbibmacro*{pages}{
  \printfield{pages}%
}

\DeclareFieldFormat[article]{title}{#1}

\DeclareBibliographyDriver{article}{%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit\newblock
  \iftoggle{bbx:articlein}{\usebibmacro{in:}}{}%
  \usebibmacro{journal+issuetitle}%
  \newunit
  \usebibmacro{pages}%
  \newunit\newblock
  \usebibmacro{finentry}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{filecontents}{TEST-Bib-Sorting.bib}
@Article{Meunier:2012,
  author   = {Meunier, L. J.},
  year     = {2012},
  title    = {\foreignlanguage{english}{Ennius, les astres et les théories anciennes de la vision. À propos de \emph{Sol albus} et \emph{radiis icta lux} (v. 84–85 Sk.)}},
  journal  = {RPh},
  volume   = {86},
  pages    = {101–21},
}

@Article{Soubiran:1992,
  author   = {Soubiran, J.},
  year     = {1992},
  title    = {Mythologie et astronomie: la longue nuit de Jupiter et d’Alcmène (Plaute, Amph., 272–276)},
  journal  = {Pallas},
  volume   = {38},
  pages    = {345–58},
}
\end{filecontents}

\begin{document}

\nocite{*}

\printbibliography

\end{document}

在此处输入图片描述

答案1

biblatex的标点符号跟踪器会抑制双重标点符号,例如.,。在这种情况下,您实际上没有双重标点符号,因为两个冲突的标点符号命令 之间有一个右括号.),。但是,跟踪器会忽略括号。

对于您的特定问题,有一个简单的解决方法:biblatex区分缩写和句子结尾期间(句号)。通常.输入中的 被解释为句末句号,它不能与逗号冲突。但缩写句号可以与逗号组合。因此,biblatex在这种情况下,足以说明.表示缩写。这可以通过\isdot在 后添加 来实现.

@article{Meunier:2012,
  author   = {Meunier, L. J.},
  year     = {2012},
  title    = {\foreignlanguage{french}{Ennius, les astres et les théories anciennes de la vision.
              À propos de \emph{Sol albus} et \emph{radiis icta lux} (v. 84–85 Sk.\isdot)}},
  journal  = {RPh},
  volume   = {86},
  pages    = {101–21},
}

生产

Meunier, LJ (2012),Ennius,《古老的视觉之星与理论》。关于白太阳与光半径 (卷 84–85 Sk.),RPh 86,第 101–21 页。


可以使用以下\isdot方式自动在字段格式中添加

 \DeclareFieldFormat[article]{title}{#1\isdot}

@article事实上, et al.的标准设置是

\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{\mkbibquote{#1\isdot}}

它已经做到了这一点。但这意味着.字段末尾的everytitle被解释为缩写点,而不是句子结尾的句号。


如上所述,biblatex标点符号跟踪器会忽略括号字符。您可以通过添加

\makeatletter
\def\blx@setsfcodes{%
  \let\blx@setsfcodes\relax
  \let\frenchspacing\blx@setfrcodes
  \let\nonfrenchspacing\blx@setencodes
  \ifnum\sfcode`\.>2000
    \blx@setencodes
  \else
    \blx@setfrcodes
  \fi
  \@setquotesfcodes
  \sfcode`\(=\@m
  \sfcode`\)=\@m
  \sfcode`\[=\@m
  \sfcode`\]=\@m
  \sfcode`\<=\@m
  \sfcode`\>=\@m}
\makeatother

到您的序言。这意味着标点符号跟踪器不再跳过)和朋友,而是回到看不到这些字符前后的标点符号的状态。

相关内容