\indent 在自定义嵌套环境中无法按预期工作

\indent 在自定义嵌套环境中无法按预期工作

我有一个自定义环境,使用方式如下:

\documentclass[12pt,draft]{memoir}
\usepackage[dvipsnames,usenames]{color}
\definecolor{shadecolor}{gray}{0.85}

\newenvironment{Myenv}
    {\begin{adjustwidth}{1in}{1in}\indent\begin{qshade}}
    {\end{qshade}\end{adjustwidth}}


\begin{document}
TESTTESTTESTTEST.  MORE TEXT.
\begin{Myenv}
Lots and lots of text \par
Including multiple lines and paragraphs.
\end{Myenv}
\end{document}

使用此定义,我确实使阴影方块内的第一个段落缩进。但是,我似乎得到了一些额外的“幽灵”空间,因此文本中的第一个段落巧妙地额外缩进。此外,似乎\indent还在阴影环境之前添加了一个额外的空白行。

关于如何修复环境有什么想法吗?

PS:我故意不使用minipage环境,因为它不会跨页中断。而 qshade回忆录包中的环境确实会跨页中断。

更新

感谢下面的 John Kormylo 提供替换代码\indent:即用以下代码替换我的环境定义的第一行

{\begin{adjustwidth}{1in}{1in}\begin{qshade}\hspace{\parindent}}

感谢所有劝我不要使用的人\indent

新代码删除了\indent伪造的额外空白行。但是,第一段开头的小额外空格仍然出现。显然\indent这不是造成这种微妙额外缩进的罪魁祸首。

答案1

您可以使用\hspace*{\parindent}在第一段的第一行插入强制段落缩进。其次,为了消除(或忽略)任何额外的虚假空格,请\ignorespaces在开头的定义中添加Myenv

在此处输入图片描述

\documentclass{memoir}
\usepackage[dvipsnames,usenames]{color}
\definecolor{shadecolor}{gray}{0.85}

\newenvironment{Myenv}
  {\begin{adjustwidth}{1in}{1in}%
   \begin{qshade}\hspace{\parindent}\ignorespaces}
  {\end{qshade}%
   \end{adjustwidth}}

\begin{document}
Lots and lots of text \par
Including multiple lines and paragraphs.
\begin{Myenv}
Lots and lots of text \par
Including multiple lines and paragraphs.
\end{Myenv}
Lots and lots of text \par
Including multiple lines and paragraphs.
\end{document}

如上所述,环境的开头可能会插入虚假空格Myenv。要手动删除此影响,请删除\ignorespaces并使用

\begin{Myenv}%

请注意使用%, 正如%行末百分号 ( ) 有什么用?

答案2

编辑:现在,当您更清楚自己想要什么时,请尝试以下步骤:

\documentclass[12pt,draft]{memoir}
    \usepackage[dvipsnames,usenames]{color}
    \usepackage[many]{tcolorbox}

    \usepackage{lipsum}

\newlength\MyIndent
\setlength\MyIndent{\parindent}
\newtcolorbox{Myenvbox}{%
        enhanced,
        arc=0mm,
        frame hidden,
        colback=gray!30,
            grow to left by =-1in,
            grow to right by=-1in,
        breakable}
\newenvironment{Myenv}
    {\begin{Myenvbox}\setlength\parindent{\MyIndent}}
    {\end{Myenvbox}}

    \begin{document}
\lipsum[1-3]

     \begin{Myenv}
\lipsum[2]\par
\lipsum[2]
    \end{Myenv}
    \end{document}

在此处输入图片描述

相关内容