我正在写一份德语文档,其中我经常引用英语和其他语言的作品。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}