编辑

编辑

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

在此处输入图片描述

相关内容