W BibLaTeX, jak oddzielić tytuł i podtytuł dwukropkiem, ale nie wtedy, gdy tytuł kończy się znakiem zapytania?
W przypadku BibLaTeX chciałbym oddzielić tytuł od podtytułu dwukropkiem, tak jak ma to miejsce w niektórych stylach cytowania. Chciałbym jednak, aby mechanizm wykrywał, czy tytuł kończy się cudzysłowem, a jeśli tak, pomija subtitlepunct
.
Dokumentacja w §4.7.3 mówi:
\addcolon
Dodaje dwukropek, chyba że jest poprzedzony przecinkiem, średnikiem, innym dwukropkiem lub kropką.
Czy mogę dodać „cudzysłów” do tej listy? To znaczy, czy istnieje rozwiązanie, które pozwala uniknąć \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}
Odpowiedzi
Można zadeklarować dopuszczalny przed interpunkcji \addcolon
z \DeclarePunctuationPairs
. Ustawienie domyślne
\DeclarePunctuationPairs{colon}{*!?}
dopuszcza kropki skrótów, wykrzykniki i znaki zapytania przed dwukropkiem. Po wszystkich innych znakach interpunkcyjnych dwukropek jest pomijany.
Prawdopodobnie chcesz
\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}

Zauważ, że \DeclarePunctuationPairs
jest to zwykle specyficzne dla języka i dlatego zwykle wymaga życia \DefineBibliographyExtras
. Nie jest to wymagane w MWE (które ani babel
nie ładuje, ani polyglossia
), ale może być bardzo istotne w twojej rzeczywistej aplikacji. Aby uzyskać więcej informacji, zobacz Rozpoznawanie znaków interpunkcyjnych Biblatex .