由于一些奇怪的错误(可能源于一个ragged2e
错误,但我不确定,所以我不会责怪任何人),我浪费了相当多的时间,所以我认为分享这个会很好。
该ragged2e
包定义了诸如 之类的命令\Centering
,可以替代通常的对齐命令,并在 之类的有趣环境中工作\pbox
。然而,在使用\Centering
几十次之后,我偶然发现了一个导致错误的非常特殊的情况。
这很好用:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ragged2e}
\begin{document}
\Centering%
Some random words.
\end{document}
但是,如果命令后的文本\Centering
以“加号”(不区分大小写)开头,我会收到“缺少数字”错误:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ragged2e}
\begin{document}
\Centering%
Plus some random words.
\end{document}
该问题似乎出现在其他命令中,例如\RaggedRight
。
根据我得到的结果texdoc
,我正在v2.1
使用ragged2e
。
答案1
有趣的错误。宏以以下定义\Centering
结尾:\@raggedtwoe@everyselectfont
% ragged2e.sty, line 191:
\newcommand{\@raggedtwoe@everyselectfont}{%
\if@raggedtwoe@spaceskip
\ifdim\fontdimen\thr@@\font=\z@\relax
\spaceskip\z@
\else
\spaceskip\fontdimen\tw@\font
\fi
\else
\spaceskip\z@
\fi
}
由于\spaceskip
是胶水参数,它将期待可能plus
或minus
规格。
使固定:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ragged2e}
\usepackage{etoolbox}
\makeatletter
\appto\@raggedtwoe@everyselectfont{\relax}
\makeatother
\begin{document}
\Centering
Plus some random words.
\end{document}
附加内容\relax
将停止搜索胶水规格。
答案2
这些命令似乎将“加号”解释为“ plus ⟨length⟩ minus ⟨length⟩
”结构的开头,以赋予长度拉伸值。\relax
在这里添加一个似乎可以解决问题。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ragged2e}
\begin{document}
\Centering \relax%
Plus some random words.
\end{document}
在命令和文本之间留一个空行也许可行,但我认为这样不太紧凑。