段落缩进与悬挂段落 :: 组合命令

段落缩进与悬挂段落 :: 组合命令

我认为这更多的是因为我不懂 Tex 的语法。我想按如下所示格式化我的段落。似乎有一种方法可以将我使用的三个命令合并为一个语句,但我无法完全理解。感谢任何人提供的帮助......(虽然也许我一开始就不应该使用 {hangparas};我不知道)

\documentclass{article}

\usepackage{lipsum} % http://ctan.org/pkg/lipsum
\usepackage[english]{babel}
\usepackage{hanging}

\begin{document}

\lipsum[1]

\begin{hangparas}{0.5cm}{1}
\setlength{\leftskip}{2cm}
\setlength{\rightskip}{2cm}

\lipsum[2]

\setlength{\rightskip}{0cm}
\setlength{\leftskip}{0cm}
\end{hangparas}

\lipsum[3]

\end{document}

詹姆士。

答案1

使用列表,这样更简单。我保留了你的原始代码以供比较。

在代码之前,先解释一下。在 LaTeX 中,几乎所有特殊格式的文本部分都是通过列表获得的:centerquotequotation都以列表的形式实现。这允许嵌套在那些特殊位置列出,这是hanging不允许的,因为列表使用\parshape会覆盖赋予的任何值\hangindent

所有这些特殊环境都是“一项”列表。任何列表都必须\item在开头有一个命令。基本list环境没有为项目定义标签,因此我们可以直接发出\item\relax,不会打印任何内容,但 LaTeX 将处于合适的状态,尊重给定的值和其他参数。为什么而不仅仅是?因为寻找可能的可选参数;\leftmargin会等效,但效率略高。\rightmargin\item\relax\item\item\item[]\item\relax

最后说明:最好使用\listand\endlist而不是\begin{list}and \end{list};这样,关于错误关闭的错误消息(比如你输入错误\end{beion})将指的是未关闭的bejon环境,而不是list

\documentclass{article}

\usepackage{lipsum} % http://ctan.org/pkg/lipsum
\usepackage[english]{babel}
\usepackage{hanging} % remove this, it's just to show the output

\newenvironment{bejon}
  {\list{}{
     \itemindent=-.5cm
     \leftmargin=2.5cm
     \rightmargin=2cm
     \topsep=0pt
     \partopsep=0pt
   }\item\relax}
  {\endlist}

\begin{document}

\lipsum[2]

\begin{hangparas}{0.5cm}{1}
\setlength{\leftskip}{2cm}
\setlength{\rightskip}{2cm}
\lipsum[2]
\setlength{\rightskip}{0cm}
\setlength{\leftskip}{0cm}
\end{hangparas}

\lipsum[2]

\begin{bejon}
\lipsum[2]
\end{bejon}

\lipsum[3]

\end{document}

在此处输入图片描述

可能更容易enumitem

\documentclass{article}

\usepackage{lipsum} % http://ctan.org/pkg/lipsum
\usepackage[english]{babel}
\usepackage{enumitem}

\newenvironment{bejon}
  {\itemize[
     label={},
     itemindent=-.5cm,
     leftmargin=2.5cm,
     rightmargin=2cm,
     nosep]
   \item\relax}
  {\enditemize}

\begin{document}

\lipsum[2]

\begin{bejon}
\lipsum[2]
\end{bejon}

\lipsum[3]

\end{document}

在此处输入图片描述

答案2

上述回复确实很有帮助——非常感谢。但事实证明,我所想的并不是我真正想要的。我想要的是让文本块中的每一行都从固定的左边距开始,但以缩进的方式环绕。希望下面的例子能说明这一点?

\documentclass{article}

\usepackage{lipsum} % http://ctan.org/pkg/lipsum
\usepackage{blindtext}
\usepackage[english]{babel}
\setlength{\parskip}{1em}

\newenvironment{bejon}
  {\list{}{
     \itemindent=-.5cm
     \leftmargin=2.5cm
     \rightmargin=2cm
     \topsep=0pt
     \partopsep=0pt
   }\item\relax}
  {\endlist}

\begin{document}

\begin{bejon}
Here's a line which I want to be wrapped onto the next line but be indented in the same way that poems often are.  This works fine.
\end{bejon}
\begin{bejon}
Here's the next line.  Its left positioning is nice, but I don't like the way it skips a line
\end{bejon}
\begin{bejon}
The gaps between lines are too big.
\end{bejon}

\blindtext

\begin{bejon}
Here's an alternative \\
I like the way the next starts without a gap, but I don't want it indented. \\
\end{bejon}



\end{document}

答案3

关于您提到的线条间隙,删除\setlength{\parskip}{1em}或仅在部分之前设置新的长度即可消除间隙。

相关内容