我使用 LaTeXeco
软件包默认\oldstylenums
在整个文档中使用文本 figures/ 。然而,出于某种奇怪的原因,它似乎导致 TeX 认为在已经连字符的单词内使用连字符是可以的,包括在单词单独使用连字符不合法的地方,如下所示:
http://sorenbjornstad.com/filesharing/illegalhyphenation.png
该示例的代码:
\documentclass[twocolumn]{memoir}
\usepackage{eco} % default to text figures, use \newstylenums if you don't want them
\begin{document}
Sometimes one might choose to take the beat-you-over-the-head-with-it approach instead of the delicate method.
\end{document}
如果我注释掉\usepackage{eco}
,它会正确地将换行符放在“you”后面。
有没有关于为什么会发生这种情况的想法,或者我可以做些什么来阻止它(除了删除包并手动指定\oldstylenums
我在文档中使用数字的所有地方)?我显然更喜欢自动解决方案,但即使是手动解决方案也会有所帮助。使用\hyphenation
没有帮助,因为单词包含连字符,所以我无法通过不放任何连字符来指定其中不允许有中断。
答案1
由于神秘的原因,eco
将其定义\hyphenchar
为 127 而不是通常的 45,因此就连字机制而言,字符 45 不会被识别为连字符。
您可以在访问字体之前重新定义相关的宏来修复此问题。
\documentclass[twocolumn]{memoir}
\usepackage{eco} % default to text figures, use \newstylenums if you don't want them
\makeatletter
\@namedef{T1+cmor}{\hyphenchar\font=45 }
\@namedef{T1+cmoss}{\hyphenchar\font=45 }
\makeatother
\begin{document}
Sometimes one might choose to take the beat-you-over-the-head-with-it approach instead of the
delicate method.
\end{document}
您可能想要查看cfr-lm
提供多种选项的包,包括旧式数字。
答案2
在你的 MWE 中加载该eco
包相当于在序言中写入:
\usepackage[T1]{fontenc}
\renewcommand{\rmdefault}{cmor}
因此很明显,问题出在字体上cmor
,没有使用 -
用作硬连字符,
尽管如 egreg 所解释的那样,这个“功能”已经完美修复,但值得注意的是,另一种更精细地控制连字符的解决方案,既不触及这个错误(呃……功能),也不触及 TeX 的核心,就是使用包中预定义的简写babel
来表示您语言的不同连字符类型,或者定义您自己的简写,这样您就可以使用一些类似于"-
硬连字符的简写。babel 文档对此进行了很好的解释。示例:
\documentclass[twocolumn]{memoir}
\usepackage[english]{babel}
\useshorthands*{"}
\defineshorthand{"-}{\babelhyphen*{hard}\,}
\usepackage{eco}
\begin{document}
Sometimes one might to take the
beat-you-over-the-head-with-it
approach instead of the delicate method.
Sometimes one might to take the
beat"-you-over-the-head-with-it
approach instead of the delicate method.
Sometimes one might to take the
beat-you"-over-the-head-with-it
approach instead of the delicate method.
Sometimes one might to take the
beat-you-over"-the-head-with-it
approach instead of the delicate method.
Sometimes one might to take the
beat-you-over-the"-head-with-it
approach instead of the delicate method.
\end{document}