如何为环境中的所有文本行产生空白?

如何为环境中的所有文本行产生空白?

如何在环境的每一行之前产生空格。如果我在序言中有以下命令

\newenvironment{myenv}
{\vspace{3mm}\hspace{0.5cm}\noindent\ignorespaces\small\texttt}
{\par\noindent\ignorespacesafterend\vspace{0.5mm}}

正文如下:

\begin{myenv}
hello \\
world
\end{myenv}

这只会在第一行产生空格。

答案1

也许你可能有兴趣使用\obeylines(这样你就不必手动换行)和\doublespacing(由setspace):

在此处输入图片描述

\documentclass{article}
\usepackage{lipsum,setspace}% http://ctan.org/pkg/{lipsum,setspace}
\newenvironment{myenv}
{\par\hrulefill\doublespacing\obeylines}
{\hrulefill\par\ignorespacesafterend}
\begin{document}
\lipsum[6]
\begin{myenv}
hello
world
\end{myenv}
\lipsum[6]
\end{document}

仅用于\hrulefill显示环境的开始/结束myenv,并且很可能在您的应用程序中不需要。

尽管提出的解决方案不显示打字机字体,但您可以发出信号\ttfamily来实现这一点(不是\texttt)。

答案2

根据具体应用,Werner 解决方案的一个小问题是,如果一行比文本长,则不会缩进连续部分。以下是另一种解决方案(并与 Werner 解决方案进行比较)。

\documentclass{article}
\usepackage{lipsum}

\newenvironment{myenv}
  {\begin{list}{}{
    \setlength{\topsep}{3mm}
    \setlength{\leftmargin}{0.5cm}
    \small\ttfamily}
    \item[]\hrulefill\\}
  {\hrulefill\end{list}}

\newenvironment{myenvW}
  {\par\hrulefill\obeylines\small\ttfamily}
  {\hrulefill\par\ignorespacesafterend}

\begin{document}

\lipsum[6]
\begin{myenv}
  test\\
  \lipsum[6]
\end{myenv}
\lipsum[6]
\begin{myenvW}
  test
  \lipsum[6]
\end{myenvW}
\end{document}

在此处输入图片描述

相关内容