編輯

編輯

我正在撰寫一份德語文檔,其中經常引用英語和其他語言的作品。用於輕鬆修改複合詞或名稱中的連字符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

連字符規則環境主動停用所有語言速記。但 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}

在此輸入影像描述

相關內容