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