Ich schreibe ein deutsches Dokument, in dem ich häufig Werke in Englisch und anderen Sprachen zitiere. Ich bin an babel
die Abkürzungen von gewöhnt ngerman
, um Trennzeichen in zusammengesetzten Wörtern oder Namen einfach ändern zu können (beispielsweise "=
für einen zusätzlichen Bindestrich, der immer gedruckt werden soll, und ""
für einen möglichen Zeilenumbruch ohne Bindestrich). Ich habe diese Abkürzungen auch für english
die Verwendung der \addto\extrasenglish
Befehle aktiviert.
Innerhalb otherlanguage
der Umgebungen im Text des Hauptdokuments funktioniert alles wie erwartet.
biblatex
, das ich zur Verwaltung meiner Bibliographien verwende, bietet die autolang
Möglichkeit und das langid
Feld, die Silbentrennungsregeln für jeden bibliographischen Eintrag umzuschalten. Wenn ich autolang
auf setze other
, legt es eine otherlanguage
Umgebung um die Zitate und Bibliographieeinträge und verwendet daher die Abkürzungen. Es druckt dann aber auch Begriffe wie and
im Englischen, was in einem deutschen Gesamtdokument nicht erwünscht ist. biblatex
bietet daher die autolang=hyphen
Möglichkeit,nur die Silbentrennungsregeln aktivierenfür die im langid
Feld angegebene Sprache, während für alle anderen Begriffe auf die Hauptdokumentsprache zurückgegriffen wird.
Allerdings funktionieren dann die Abkürzungen nicht mehr. Wie bekomme ich sie wieder zum Laufen?
Hier ist ein MWE:
\documentclass{scrartcl}
\usepackage{fontspec}
\usepackage[english,ngerman]{babel}
\addto\extrasenglish{\useshorthands{"}\languageshorthands{ngerman}}
\usepackage{csquotes}
\usepackage[backend=biber,autolang=hyphen,style=verbose]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{bibliography.bib}
@collection{NMR,
editor = {Wardrip"=Fruin, Noah and Montfort, Nick},
title = {The New Media Reader},
location = {Cambridge/""MA and London},
publisher = {MIT Press},
year = 2003,
langid = {english}
}
\end{filecontents}
\addbibresource{bibliography.bib}
\begin{document}
\begin{otherlanguage}{english}
Manually using babel shorthands inside an \texttt{otherlanguage}
environment, everything works as expected: Wardrip"=Fruin.
Cambridge/""MA.
\end{otherlanguage}
Yet, citing the work from the bibliography, where it was given a
\texttt{langid} field, the shorthands do not work.\autocite{NMR}
Neither do they work in the bibliography:
\printbibliography
\end{document}
Antwort1
Die Umgebung hyphenrules deaktiviert aktiv alle Sprachkürzel. Babel bietet jedoch generische Befehle, die immer funktionieren:
\documentclass{scrartcl}
\usepackage{fontspec}
\usepackage[english,ngerman]{babel}
\addto\extrasenglish{\useshorthands{"}\languageshorthands{ngerman}}
\begin{document}
\begin{hyphenrules}{ngerman}
Manually using babel shorthands inside an \texttt{hyphenrules}
environment, doesn't: Wardrip"=Fruin.
Cambridge/""MA.
Use the babel commands: Wardrip\babelhyphen{hard}Fruin.
Cambridge/\babelhyphen{empty}MA.
\end{hyphenrules}
\end{document}
Biblatex hat auch die Befehle \hyphen
und \hyphenate
(aber meiner Meinung nach nichts für ""
).
Bearbeiten
Eigentlich kann man die Tastenkombinationen so definieren, dass sie für alle Sprachen funktionieren:
\documentclass{scrartcl}
\usepackage{fontspec}
\usepackage[english,ngerman]{babel}
\usepackage{csquotes}
\useshorthands*{"}
\defineshorthand{""}{\babelhyphen{empty}}
\defineshorthand{"=}{\babelhyphen{hard}}
\begin{document}
\begin{hyphenrules}{ngerman}
Wardrip"=Fruin.
Cambridge/""MA.
\end{hyphenrules}
\selectlanguage{english}
Wardrip"=Fruin.
Cambridge/""MA.
\selectlanguage{ngerman}
Wardrip"=Fruin.
Cambridge/""MA.
\end{document}