Estoy escribiendo un documento en alemán, donde cito frecuentemente obras en inglés y otros idiomas. Acostumbrado a babel
las taquigrafías de ngerman
para 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 english
usar los \addto\extrasenglish
comandos.
Dentro de otherlanguage
los entornos del texto del documento principal, todo funciona como se esperaba.
biblatex
, que utilizo para gestionar mis bibliografías, ofrece la autolang
opción y el langid
campo para cambiar las reglas de separación de palabras para cada entrada bibliográfica. Cuando lo configuro autolang
, other
crea un otherlanguage
entorno 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 and
en inglés, lo cual no es deseable en un documento general en alemán. biblatex
por lo tanto ofrece la autolang=hyphen
opción deactivar solo las reglas de separación de palabraspara el idioma especificado en el langid
campo, 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}
biblatex también tiene los comandos \hyphen
y \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}