我有一个自定义环境,使用方式如下:
\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}