我有以下文本。我的问题是,在我的文本和我的其它文本之间插入了大约等于整行的距离。我想避免这种情况,但不确定如何做到这一点,所以我的问题是如何减少这个垂直距离?
Mytext
\begin{addmargin}[0.3cm]{0cm}
MyOtherText
\end{addmargin}
对于我正在使用的 documentclass,它是这个:
\documentclass[8pt,a4paper,BCOR10mm,DIV11,toc=listof,parskip=full, openany]{scrbook}
答案1
\documentclass[parskip=full,]{scrartcl}
\makeatletter
\let\@addmarginORIG\@addmargin
\renewcommand*\@addmargin{%
\vspace{-\bigskipamount}
\@addmarginORIG}
\makeatother
\begin{document}
Mytext
\begin{addmargin}[0.3cm]{0cm}
MyOtherText
\end{addmargin}
\end{document}
答案2
您正在使用parskip=full
并scrbook
严格遵守:addmargin
开始一个新段落,并且它与前一个段落之间以完整的 parskip 分隔。
如果您想在您的环境中删除 parskip addmargin
,我建议您定义一个新的环境。
\documentclass[
parskip=full
]{scrartcl}
\newenvironment{thomasaddmargin}
{\setlength{\parskip}{0pt plus 1pt}\addmargin}
{\endaddmargin}
\begin{document}
Mytext
\begin{thomasaddmargin}[0.3cm]{0cm}
MyOtherText
\end{thomasaddmargin}
Mytext
Mytext
\end{document}
如果要遵循“删除垂直空间方法”,则必须修补正确的命令,它不是\@addmargin
,而是它调用的内部命令。使用 很容易xpatch
;请注意,要删除的粘合是\parskip
,而不是\bigskipamount
。
\documentclass[
parskip=full
]{scrartcl}
\usepackage{xpatch}
\makeatletter
\pretocmd{\@addmargin}{\vspace{-\parskip}}{}{}
\makeatother
\begin{document}
Mytext
\begin{addmargin}[0.3cm]{0cm}
MyOtherText
\end{addmargin}
Mytext
Mytext
\end{document}
输出是相同的,因为环境中只有一个段落addmargin
。
两种解决方案的区别在于,前者内部段落之间不使用 parskip addmargin
,而后者将使用正常的 parskip。请自行选择。
最后的劝告:不使用parskip=full
。