使所有单行段落都变成 \noindent

使所有单行段落都变成 \noindent

我想让所有多行段落都缩进,所有单行段落都不缩进。类似于 关闭单行段落缩进

但!

我需要自动生成 LaTeX 代码,所以我不知道该段落是单行还是多行。

有没有什么办法可以要求那种样式的格式?

答案1

在我看来,你想要做的事情会导致非常糟糕的排版。

这是一种非常基本的方法,但它只允许使用普通段落;列表或类似的东西都会破坏它。

\documentclass{article}

\def\testpar#1\par{%
  \sbox0{#1}%
  \ifdim\wd0<\columnwidth
    {\setbox0=\lastbox}#1\par
  \else
    #1\par
  \fi
}

\newenvironment{astounding}
  {\everypar={\testpar}}
  {}

\begin{document}

\begin{astounding}
This is a single line.

This line will be two lines long if I just add a few words
and more words until it is long enough.

\end{astounding}

\end{document}

在此处输入图片描述

相关内容