使用 cleveref 我有时会写一些东西,例如
\documentclass[deutsch,graybox,envcountchap]{svmono}
\usepackage[T2A,T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[USenglish,british,canadian,latin,russian,french,german,ngerman]{babel}
\usepackage[ngerman,capitalize]{cleveref}
\crefname{example}{Bsp.\@}{Bei\-spie\-le}
\Crefname{example}{Beispiel}{Bei\-spie\-le}
\crefname{exercise}{Übg.\@}{Übgn.\@}
\Crefname{exercise}{Übung}{Übun\-gen}
....
我的问题是:
- 我是否需要
\@
在句号后面加上缩写来说明这些缩写通常不在句末,或者 cleveref 可以帮我做这件事吗? \-
鉴于主要文档语言是现代德语,我是否需要通过明确指定连字点,或者 cleveref 是否只是假设是现代德语而允许连字?
答案1
一些评论和意见:
如果 babel 包加载了
german
and/orngerman
语言选项,\frenchspacing
则默认情况下会生效,这意味着Bsp.\@
除了 之外,写 也是多余的Bsp.
:句末句号后不会有任何多余的空格。请参阅下面显示的屏幕截图中的前三行。如果将选项传递
ngerman
给cleveref
包,则不需要为与example
env./counter 一起的标签指定德语形式,除非您更喜欢使用某些特殊的缩写形式。如下面的截图所示,LaTeX 成功找到了单词“Beispiele”和“Übungen”中的所有标准连字符点,如果语言
ngerman
选项已生效。(垂直标记以黄色突出显示,由showhyphens
包插入 - 使用 LuaLaTeX 编译代码)。
\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage{showhyphens}
\usepackage{amsthm}
\usepackage{cleveref}
\newtheorem{example}{Beispiel}
\newtheorem{exercise}{Übung}
\crefname{example}{Bsp.}{Beispiele} % the "Bsp." abbrev. is a bit nonstandard
\crefname{exercise}{Übg.}{Übgn.}
\Crefname{exercise}{Übung}{Übungen}
\begin{document}
\begin{example} \label{exp:a} aaa \end{example}
\begin{exercise}\label{exc:b} bbb \end{exercise}
\begin{example} \label{exp:c} ccc \end{example}
\begin{exercise}\label{exc:d} ddd \end{exercise}
\noindent
\cref{exp:a}, \cref{exc:d}.
\noindent
Bsp.\ 1, Übg.\ 2.
\noindent
Bsp. 1, Übg. 2. % just to demonstrate that '\frenchspacing' is in effect
\noindent
\Cref{exp:a,exp:c} und \Cref{exc:b,exc:d}.
\end{document}