我刚刚遇到了 mathdesign 和 memoir 中的 ell chapterstyle 之间的奇怪交互。我使用的是 TeX Live 2013,我相信这是在 mathdesign 2.31 更新中引入的。
以下是触发该行为的最少代码:
\documentclass{memoir}
\usepackage[charter]{mathdesign}
\chapterstyle{ell}
\begin{document}
\chapter{First chapter title}
Some text.
\end{document}
这会出现以下错误:
! Leaders not followed by proper glue.
<to be read again>
\hfill
l.5 \chapter{First chapter title}
无论为 mathdesign 选择哪种字体系列,都会发生这种情况(未加载 mathdesign 时不会发生这种情况)。
问题似乎是由 \chapterheadstart 中的 \hrulefill 在回忆录端引发的。ell chapterstyle 的定义包括以下内容:
\renewcommand*{\chapterheadstart}{\begingroup
\vspace*{\beforechapskip}%
\begin{adjustwidth}{}{-\chapindent}%
\hrulefill
\smash{\rule{0.4pt}{15mm}}
\end{adjustwidth}\endgroup}
将 \hrulefill 替换为 \hfill 或 \dotfill 可消除错误,反之,使用上述重新定义代替完整的 ell chapterstyle 也会导致错误。但在普通段落中使用 \hrulefill 不会导致错误。
可能存在什么问题以及如何解决?
答案1
嗯,你的回答确实如此:\mathdesign
改变它的定义\hrulefill
可能不应该。
这恢复了定义。
\documentclass{memoir}
\let\xhrf\hrulefill
\usepackage[charter]{mathdesign}
\let\hrulefill\xhrf
\renewcommand*{\chapterheadstart}{\begingroup
\vspace*{\beforechapskip}%
\begin{adjustwidth}{}{-\chapindent}%
\hrulefill
\smash{\rule{0.4pt}{15mm}}
\end{adjustwidth}\endgroup}
\begin{document}
\chapter{First chapter title}
Some text.
\end{document}
或者在不破坏其他用途的情况下添加 mathdesign 预期宽度参数的定义:
\makeatletter
\def\hrulefill{\leavevmode\leaders \hrule height \rulethickness \hfill\kern\z@}
\makeatletter