将 varwidth 与 \hangindent 结合使用

将 varwidth 与 \hangindent 结合使用

看起来内部{varwidth}悬挂缩进应用于段落的右侧,而不是左侧:

\documentclass{article}
\usepackage{varwidth}
\usepackage{lipsum}

\begin{document}

\noindent
\begin{minipage}{\linewidth}
\setlength{\hangindent}{15pt}
\lipsum[1]
\end{minipage}

\noindent
\begin{varwidth}{\linewidth}
\setlength{\hangindent}{15pt}
\lipsum[1]
\end{varwidth}

\end{document}

截屏

有什么解决办法吗?

答案1

varwidth建立一个\vbox然后将其拆除以测量最宽的线,以便稍后重新设置它。测量线条时,悬挂压痕的信息会丢失。

如果我说

\setbox0=\vbox{
  \hangindent=15pt
  \lipsum[1]
}{\showboxdepth=1 \showboxbreadth=1000 \showbox0 }

我进入日志

> \box0=
\vbox(138.94444+1.94444)x345.0
.\hbox(6.94444+1.94444)x345.0, glue set 0.85849 []
.\penalty 150
.\glue(\baselineskip) 3.11111
.\hbox(6.94444+1.94444)x330.0, glue set - 0.22638, shifted 15.0 []
.\glue(\baselineskip) 3.11111
.\hbox(6.94444+1.94444)x330.0, glue set 1.06665, shifted 15.0 []
.\glue(\baselineskip) 3.11111
.\hbox(6.94444+1.94444)x330.0, glue set 0.26152, shifted 15.0 []
.\penalty 100
.\glue(\baselineskip) 3.11111
.\hbox(6.94444+1.94444)x330.0, glue set - 0.24269, shifted 15.0 []
.\glue(\baselineskip) 3.11111
.\hbox(6.94444+1.94444)x330.0, glue set 0.34998, shifted 15.0 []
.\glue(\baselineskip) 3.11111
[...similar lines omitted...]

因此,您会看到悬挂式压痕是通过移动盒子而不是在其左侧添加胶水获得的。当您拥有这样的盒子并应用\lastbox它时(这是varwidth在测量阶段所做的),盒子移动的信息就会丢失,并且无法以任何方式恢复。

您可以使用 模拟悬挂缩进\leftskip。但是,我不确定您为什么varwidth在这种情况下使用。

\documentclass{article}
\usepackage{varwidth}
\usepackage{lipsum}

\begin{document}

\noindent
\begin{minipage}{\linewidth}
\setlength{\hangindent}{15pt}
\lipsum[1]
\end{minipage}

\medskip % to make barbara happier

\noindent
\begin{varwidth}{\linewidth}
\setlength{\leftskip}{15pt}
\hspace*{-15pt}\lipsum[1]
\end{varwidth}

\end{document}

在此处输入图片描述

相关内容