Я пишу немецкий документ, в котором часто цитирую работы на английском и других языках. Использовал babel
сокращения ngerman
для простого изменения символов переноса в сложных словах или именах (например, "=
для дополнительного дефиса, который всегда должен быть напечатан, и ""
для возможного переноса строки без дефиса), также активировал эти сокращения для english
использования \addto\extrasenglish
команд.
Внутри otherlanguage
сред в тексте основного документа все работает так, как и ожидалось.
biblatex
, который я использую для управления своими библиографиями, предлагает опцию autolang
и langid
поле для переключения правил переноса для каждой библиографической записи. Когда я устанавливаю autolang
значение other
, он помещает otherlanguage
окружение вокруг ссылок и библиографических записей и, следовательно, использует сокращения. Но затем он также печатает термины, как and
на английском языке, что нежелательно в общем немецком документе. biblatex
поэтому предлагает autolang=hyphen
опциюактивировать только правила переносадля языка, указанного в langid
поле, при этом для всех остальных терминов используется основной язык документа.
Однако тогда сокращения больше не работают. Как мне заставить их работать?
Вот 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}
решение1
Среда hyphenrules активно деактивирует все языковые сокращения. Но babel предлагает общие команды, которые всегда работают:
\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 также есть команды \hyphen
и \hyphenate
(но, на мой взгляд, ничего для ""
).
Редактировать
На самом деле вы можете определить сочетания клавиш так, чтобы они работали для всех языков:
\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}