在没有缩进的文档中缩进单个段落

在没有缩进的文档中缩进单个段落

我在 LaTeX 文档中有几个文本段落。在我的序言中我有\setlength{\parindent}{0pt},但现在我需要缩进一个段落以进行强调。

我想知道是否有比以下更有效的方法:

     This paragraph is not indented.
\setlength{\parindent}{15pt}
     Here is my indented paragraph.
\setlength{\parindent}{0pt}
     And we're back to no indentation.

我觉得应该有一种更简单的方法来做到这一点。如果我没有改变序言中的长度,文档将默认缩进所有段落,但我可以\noindent在开头使用来关闭单个段落的缩进。为什么不\indent以相反的方式工作,并将该段落恢复为默认缩进?

答案1

我不认为使用缩进“强调”是个好主意。我更喜欢缩进段落和零段落跳过,但我知道有人有不同的看法。

然而,我认为要么总是使用缩进(除了常见的例外,例如在章节标题之后),要么从不使用缩进。

如果你真的想让读者感到困惑;-),这里有一种方法。请注意,\indent只会添加一个宽度为 的空框\parindent,因此如果将参数设置为零,则什么都看不到。诀窍是\parindent本地重置,结束的附加括号会将其重置为零。

\documentclass{article}
\setlength{\parindent}{0pt}
\newcommand{\forceindent}{\leavevmode{\parindent=1em\indent}}

\begin{document}

This is not indented.

\forceindent This is indented.

This is not indented.

\end{document}

在此处输入图片描述

注意。感谢 Frank Mittelbach 发现了更简单的解决方案中的问题,没有该解决方案,\leavevmode该解决方案会将\everypar标记传递到组内。\leavevmode将有两个“缩进框”,一个宽度为零,后面是可能插入的内容\everypar,然后是新的缩进框。

另一种可能性是不在组内执行任何操作:

\newcommand{\forceindent}{\parindent=1em\indent\parindent=0pt\relax}

答案2

这是一个解决方案,可以保留文档类可能具有的任何标准缩进\myindent

\documentclass{article}

\newlength{\oldparindent}
\setlength{\oldparindent}{\parindent}
\newcommand{\myindent}{\hspace{\oldparindent}}

\setlength{\parindent}{0pt}
%\usepackage{parskip} % potentially a better solution than the line above;
                      % adds some space between paragraphs.

\usepackage{lipsum} % just for dummy text

\begin{document}
\lipsum[1]

\lipsum[1]

\myindent\lipsum[1]

\lipsum[1]
\end{document}

输出

相关内容