如果文章标题以.)
逗号结尾,则后面应该跟的逗号不存在。如果只有一个右括号,则后面也有逗号。请参见下面的屏幕截图。
该如何修复?\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},
}
生产
可以使用以下\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
到您的序言。这意味着标点符号跟踪器不再跳过)
和朋友,而是回到看不到这些字符前后的标点符号的状态。