由于 \raisebox 导致的段落中断错误

由于 \raisebox 导致的段落中断错误

我想画一条水平线来分隔文档中的内容,如下所示:

分隔线

但是,我注意到段落和方程式之间的垂直间距并不像它应该的那样:

方程分离

奇怪的是,如果我评论分隔线,它就能正常工作。

没有分隔线

这是我的命令:

\newcommand*{\labline}[1]{%
\setbox\z@\hbox{#1}\relax%
\begin{center}%
\hrulefill\raisebox{-0.45\ht\z@}{\:#1\:}\hrulefill\null%
\end{center}%
}%

生成段落和方程的代码

\kant[9]
\labline{Separator}
\kant[10]
\[ \text{Total derivative: }\frac{\mathrm{d}^3f}{\mathrm{d}x^3} \]

平均能量损失

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{kantlipsum}
\usepackage{amsmath}

%% The command %%
\makeatletter
\newcommand*{\labline}[1]{%
\setbox\z@\hbox{#1}\relax%
\begin{center}%
\hrulefill\raisebox{-0.45\ht\z@}{\:#1\:}\hrulefill\null%
\end{center}%
}%
\makeatother

\title{}
\author{}
\date{\today}

\begin{document}

\section{With the separator}
\kant[1]
\labline{Separator}
\kant[1]
\[ \text{Total derivative: }\frac{\mathrm{d}^3f}{\mathrm{d}x^3} \]

\newpage

\section{Without the separator}
\kant[1]
\kant[1]
\[ \text{Total derivative: }\frac{\mathrm{d}^3f}{\mathrm{d}x^3} \]

\end{document}

答案1

这只是\kant宏的一个产物,以段落分隔符结尾。您永远不应该在显示的公式前有段落分隔符。这里您得到的\abovedisplayshortskip是自然大小为 0pt 的文本,但仅适用于段落的最后一行不与公式重叠的情况。

\kant[1]x 参阅 ,了解不以段落分隔符结束并触发 预期用途的文本\abovedisplayshortskip

在此处输入图片描述

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{kantlipsum}
\usepackage{amsmath}

%% The command %%
\makeatletter
\newcommand*{\labline}[1]{%
\setbox\z@\hbox{#1}\relax%
\begin{center}%
\hrulefill\raisebox{-0.45\ht\z@}{\:#1\:}\hrulefill\null%
\end{center}%
}%
\makeatother

\title{}
\author{}
\date{\today}

\begin{document}

\section{With the separator}
\kant[1]
\labline{Separator}
\kant[1]x
\[ \text{Total derivative: }\frac{\mathrm{d}^3f}{\mathrm{d}x^3} \]

\newpage
\showoutput

\section{Without the separator}
\kant[1]
\kant[1]x
\[ \text{Total derivative: }\frac{\mathrm{d}^3f}{\mathrm{d}x^3} \]

\end{document}

相关内容