Editar

Editar

Estoy escribiendo un documento en alemán, donde cito frecuentemente obras en inglés y otros idiomas. Acostumbrado a babellas taquigrafías de ngermanpara modificar fácilmente los símbolos de separación de palabras en palabras o nombres compuestos (por ejemplo, "=para un guión adicional que siempre debe imprimirse y ""para un posible salto de línea sin guión), también activé esas taquigrafías para englishusar los \addto\extrasenglishcomandos.

Dentro de otherlanguagelos entornos del texto del documento principal, todo funciona como se esperaba.

biblatex, que utilizo para gestionar mis bibliografías, ofrece la autolangopción y el langidcampo para cambiar las reglas de separación de palabras para cada entrada bibliográfica. Cuando lo configuro autolang, othercrea un otherlanguageentorno alrededor de las citas y entradas de bibliografía y, por lo tanto, utiliza las taquigrafías. Pero luego también imprime términos como anden inglés, lo cual no es deseable en un documento general en alemán. biblatexpor lo tanto ofrece la autolang=hyphenopción deactivar solo las reglas de separación de palabraspara el idioma especificado en el langidcampo, mientras que vuelve al idioma del documento principal para todos los demás términos.

Sin embargo, entonces las taquigrafías ya no funcionan. ¿Cómo hago para que funcionen?

Aquí hay un 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}

Respuesta1

El entorno hyphenrules desactiva activamente todas las taquigrafías del idioma. Pero babel ofrece comandos genéricos que siempre funcionan:

\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}

ingrese la descripción de la imagen aquí

biblatex también tiene los comandos \hypheny \hyphenate(pero en mi humilde opinión, nada para "").

Editar

De hecho, puedes definir el acceso directo para que funcione en todos los idiomas:

\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}

ingrese la descripción de la imagen aquí

información relacionada