使用 hangindent 获得正确间距

使用 hangindent 获得正确间距

我希望定义挂在被定义的符号(在本例中是东西)的右侧$\chi...$。这是我写的:

\documentclass{amsart}

\begin{document}

{%
  \leftskip=\parindent\rightskip=\parindent%
  \parindent=0pt%
  \setbox0=\hbox{$\chi^*(H, w) =$ }%
  \hangindent=\wd0\hangafter1%
  \advance\hangindent by1pt%
  $\chi^*(H, w) =$ minimum of~$\lambda_1 + \cdots + \lambda_k$,
  where~$\lambda_1$, \dots,~$\lambda_k \geq 0$ and there are
  independent sets~$I_1$, \dots,~$I_k$ such
  that~$\lambda_1 \chi_{I_1} + \cdots + \lambda_k \chi_{I_k} = w$.

}

\end{document}

如果没有advance\hangindent by1pt上述内容,第二行的起始位置就会比应在的位置稍左一些。我觉得造成这种情况的原因是单词之间的空格中存在拉伸粘连,但我已经尝试过阻止这种情况,但无济于事。有什么想法吗?

答案1

问题在于,公式中的空格会因为对齐而拉伸或收缩,而在框中测量悬挂缩进时,这些空格是固定的。

您需要“冻结”这些空间,我建议为此类事物定义一个环境。

\documentclass{amsart}

\usepackage{lipsum}

\newlength{\explainformulawidth}
\newenvironment{explainformula}[1]
 {%
  \par\addvspace{\topsep}
  \leftskip=\parindent
  \rightskip=\parindent
  \parindent=0pt
  \settowidth{\explainformulawidth}{$#1={}$}%
  \hangindent=\explainformulawidth
  \hangafter=1
  ${#1={}}$\ignorespaces
 }
 {\par\addvspace{\topsep}}

\begin{document}

\lipsum[1][1-4]

\begin{explainformula}{\chi^*(H, w)}
  minimum of~$\lambda_1 + \cdots + \lambda_k$,
  where~$\lambda_1$, \dots,~$\lambda_k \geq 0$ and there are
  independent sets~$I_1$, \dots,~$I_k$ such
  that~$\lambda_1 \chi_{I_1} + \cdots + \lambda_k \chi_{I_k} = w$.
\end{explainformula}

\lipsum[2][1-4]

\end{document}

注意,排版时公式是用括号输入的,等号后的空格由 提供{}

在此处输入图片描述

相关内容