生态包装导致非法连字符

生态包装导致非法连字符

我使用 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}

平均能量损失

相关内容