我在 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}