删除左栏前后的缩进/换行符

删除左栏前后的缩进/换行符

我正在写讲座摘要,遇到了一个问题。
我想在我必须知道的重要定理附近插入一个垂直的左栏。
到目前为止,我发现了以下内容:

\documentclass[a4paper,landscape]{report}
\usepackage[a4paper,margin=0.5cm,landscape]{geometry}

\usepackage{blindtext}
\usepackage{framed}

\renewenvironment{leftbar}{%
    \nobreak
    \def\FrameCommand{{\vrule width 1pt} \hspace{3pt} }%
    \MakeFramed {\advance\hsize-\width \FrameRestore}}%
{\endMakeFramed}

\begin{document}
    \blindtext\\
    \blindtext
    \begin{leftbar}
    \blindtext
    \end{leftbar}
    \blindtext\\
\end{document}

我已经将线条的粗细设置为 1 像素,因为它对我来说太大了。

以下是一个例子:只是纯文本在此处输入图片描述

缩进并在左栏前后生成一个换行符:在此处输入图片描述

我该怎么做才能删除缩进和新行?

非常感谢您的回答!

答案1

要删除环境开头的缩进,leftbar您需要\noindent在开始代码中添加一个。(以及一个\ignorespaces以防止后面出现空格})。对于环境后的缩进,您可以使用\@endparenv内核宏。环境周围的垂直间距由长度控制\OuterFrameSep,您可以将其重新定义为零(但保留一定的拉伸能力)。

\documentclass{report}

\usepackage{blindtext}
\usepackage{framed}

\renewenvironment{leftbar}{%
   \OuterFrameSep=0ex plus .8ex
   \def\FrameCommand{{\vrule width 1pt} \hspace{3pt} }%
   \MakeFramed {\advance\hsize-\width \FrameRestore}
   \noindent\ignorespaces
  }{%
   \endMakeFramed
   \csname@endparenv\endcsname
}

\begin{document}

\blindtext
\begin{leftbar}
\blindtext
\end{leftbar}
Some text here to show no indentation.
\begin{leftbar}
Other lorem ipsum stuff.
\end{leftbar}

Here you \emph{do} have an indentation because of the additional empty line.

\end{document}

在此处输入图片描述

注意空格:现在

\def\FrameCommand{{\vrule width 1pt} \hspace{3pt} }

为您提供水平空间3pt 两个空格:参见

a{\vrule width 1pt} \hspace{3pt} b\par
a{\vrule width 1pt}\hspace{3pt} b\par
a{\vrule width 1pt}\hspace{3pt}b

在此处输入图片描述

我会去掉这两个空格,并将增加到3pt你喜欢的值。

相关内容