Редактировать

Редактировать

Я пишу немецкий документ, в котором часто цитирую работы на английском и других языках. Использовал 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}

введите описание изображения здесь

Связанный контент