Dans BibLaTeX, comment délimiter le titre et le sous-titre par deux points, mais pas lorsque le titre se termine par un point d'interrogation?

Dec 09 2020

Avec BibLaTeX, j'aimerais séparer le titre et le sous-titre par deux points, comme cela se fait dans certains styles de citation. Cependant, j'aimerais que le mécanisme détecte si le titre se termine par un guillemet et si c'est le cas, omettez le subtitlepunct.

La documentation du §4.7.3 dit:

\addcolon Ajoute un deux-points sauf s'il est précédé d'une virgule, d'un point-virgule, d'un autre deux-points ou d'un point.

Puis-je ajouter des "guillemets" à cette liste? Ie, y a-t-il une solution qui évite \isdot?


\documentclass{article}

\begin{filecontents}{test.bib}
    @book{testbook,
      author = {A. U. Thor},
      year = {2020},
      title = {An example title?},
      subtitle = {An example subtitle}
    }
\end{filecontents}

\usepackage{biblatex}
\addbibresource{test.bib}
\renewcommand*{\subtitlepunct}{\addcolon\space}

\begin{document}
    \nocite{testbook}
    \printbibliography
\end{document}

Réponses

5 moewe Dec 09 2020 at 22:38

Vous pouvez déclarer une ponctuation acceptable avant \addcolonavec \DeclarePunctuationPairs. Le paramètre par défaut

\DeclarePunctuationPairs{colon}{*!?}

autorise les points d'abréviation, les points d'exclamation et les points d'interrogation avant un deux-points. Après tous les autres signes de ponctuation, le deux-points est supprimé.

Tu veux probablement

\documentclass{article}

\usepackage{biblatex}

\renewcommand*{\subtitlepunct}{\addcolon\space}

\DeclarePunctuationPairs{colon}{*}

\begin{filecontents}{\jobname.bib}
@book{testbook,
  author   = {A. U. Thor},
  year     = {2020},
  title    = {An example title?},
  subtitle = {An example subtitle}
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
  \nocite{testbook}
  \printbibliography
\end{document}

Notez que cela \DeclarePunctuationPairsest généralement spécifique à la langue et a donc généralement besoin de vivre \DefineBibliographyExtras. Cela n'est pas nécessaire dans le MWE (qui ne charge ni babelni polyglossia), mais peut être très pertinent dans votre application réelle. Voir Reconnaissance de ponctuation Biblatex pour plus de détails.