我正在寻找一种方法,让段落左侧有双垂直线。这可以通过framed
包来实现,但我不喜欢它的间距(见图)。目的是tcolorbox
产生,但我不喜欢使用 TikZ,因为它会减慢编译速度(我会经常使用规则。)
我看见
这个问题,它询问了如何在 Plain TeX 中生成可拆分的垂直线,但间距就像 一样framed
。我也尝试了mdframed
包(没有 TikZ),但它产生了像 这样的框framed
,并且不支持双线(没有 TikZ 或 PSTricks。)
那么如果没有 TikZ 该怎么办?
谢谢
输出
不同之处(添加)
- “With
framed
” 顶部框架之间有空格,底部框架之间没有空格。 - 'With
tcolorbox
' 的顶部之间没有空格,底部之间有空格。换句话说,行的结束位置恰好是内容结束的位置。
代码
\documentclass{article}
\usepackage{framed}
\usepackage{tikz}
\usepackage{tcolorbox}
\tcbuselibrary{xparse,skins,breakable}
\usepackage{lipsum}
\usepackage{showframe}
\newenvironment{leftvert}{%
\def\FrameCommand{%
\kern 1.75pt \vrule width 1.9pt \kern .7pt \vrule width 1.9pt\hspace{\dimexpr 2em-6.25pt}%
} \MakeFramed {\advance\hsize-\width \FrameRestore}%
}{\endMakeFramed}
\newtcolorbox{tleftvert}{%
parbox=false,
breakable,
blanker,
left=2em,
borderline west={2pt}{3pt}{double},
}
\begin{document}
\begin{leftvert}
\lipsum[1-10]
\end{leftvert}
\begin{tleftvert}
\par
\lipsum[1-10]
\end{tleftvert}
\end{document}
另一个例子(添加)
javi_gg1写道:
在我看来,在这两种情况下,规则的开始和结束位置都与文本的开始和结束位置完全相同。区别在于,使用 时
tcolorbox
,文本和规则都与页面框架的顶部对齐,而使用 时,framed
两者都与页面框架的底部对齐。
我再举一个例子来说明不对。
编辑:我把这个例子放在这里,这样我们就能很容易地看到错误的底部间距。所以,我仍然有错误的间距和没有数学的文本。
\begin{document}
\begin{leftvert}
\lipsum[1-3]
\newpage
\begin{equation}
\begin{split}
some &= long\\ &= long\\ &= long\\ &= long\\ &= long\\ &= long\\
&= long\\ &= long\\ &= long\\ &= long\\ &= long\\ &= long\\
&= equation.
\end{split}
\end{equation}
\end{leftvert}
\newpage
\begin{tleftvert}
\par
\lipsum[1-3]
\begin{equation}
\begin{split}
some &= long\\ &= long\\ &= long\\ &= long\\ &= long\\ &= long\\
&= long\\ &= long\\ &= long\\ &= long\\ &= long\\ &= long\\
&= equation.
\end{split}
\end{equation}
\end{tleftvert}
\end{document}
答案1
在我看来,在这两种情况下,规则的开始和结束位置都与文本的开始和结束位置完全相同。区别在于,使用 时tcolorbox
,文本和规则都与页面框架的顶部对齐,而使用 时,framed
两者都与页面框架的底部对齐。
使用framed
环境时,可以通过调整 的值来设置第一行文本的基线与页面顶部之间的距离\FrameHeightAdjust
。将其设置为略小于1em
应该可以实现您想要的效果(使用 完全匹配1em
会使其填满页面并在开头创建一个空白页):
\renewcommand{\FrameHeightAdjust}{\dimexpr 1em-0.1pt}
\documentclass{article}
\usepackage{framed}
\usepackage{tikz}
\usepackage{tcolorbox}
\tcbuselibrary{xparse,skins,breakable}
\usepackage{lipsum}
\usepackage{showframe}
\newenvironment{leftvert}{%
\renewcommand{\FrameHeightAdjust}{\dimexpr 1em-0.1pt}
\def\FrameCommand{%
\kern 1.75pt \vrule width 1.9pt \kern .7pt \vrule width 1.9pt\hspace{\dimexpr 2em-6.25pt}%
} \MakeFramed {\advance\hsize-\width \FrameRestore}%
}{\endMakeFramed}
\newtcolorbox{tleftvert}{%
parbox=false,
breakable,
blanker,
left=2em,
borderline west={2pt}{3pt}{double},
}
\begin{document}
\begin{leftvert}
\lipsum[1-10]
\end{leftvert}
\begin{tleftvert}
\par
\lipsum[1-10]
\end{tleftvert}
\end{document}
编辑:如果您\newpage
在framed
环境内使用命令,规则将延伸到页面底部。为了防止这种情况,您可以关闭环境framed
,发出\newpage
命令,然后framed
再次打开环境:
...
\end{leftvert}
\newpage
\begin{leftvert}
...
至于方程式,它们本身在上方和下方有一些填充,这会使规则延长。如果你碰巧在环境末尾有一个方程式,framed
并且你希望规则在方程式结束的地方结束,你可以本地设置:\belowdisplayskip
0pt
{
\setlength{\belowdisplayskip}{0pt}
\begin{equation}
....
\end{equation}
}
请注意,括号中的更改是局部的:您仍然希望在其他等式中添加填充。
\documentclass{article}
\usepackage{amsmath}
\usepackage{framed}
\usepackage{tikz}
\usepackage{tcolorbox}
\tcbuselibrary{xparse,skins,breakable}
\usepackage{lipsum}
\usepackage{showframe}
\renewcommand{\FrameHeightAdjust}{\dimexpr 1em-0.1pt}
\newenvironment{leftvert}{%
\def\FrameCommand{%
\kern 1.75pt \vrule width 1.9pt depth 0pt \kern .7pt \vrule width 1.9pt depth 0pt\hspace{\dimexpr 2em-6.25pt}%
} \MakeFramed {\advance\hsize-\width \FrameRestore}%
}{\endMakeFramed}
\newtcolorbox{tleftvert}{%
parbox=false,
breakable,
blanker,
left=2em,
borderline west={2pt}{3pt}{double},
}
\begin{document}
\begin{leftvert}
\lipsum[1-3]
\end{leftvert}
\newpage
\begin{leftvert}
{
\setlength{\belowdisplayskip}{0pt}
\begin{equation}
\begin{split}
some &= long\\ &= long\\ &= long\\ &= long\\ &= long\\ &= long\\
&= long\\ &= long\\ &= long\\ &= long\\ &= long\\ &= long\\
&= equation.
\end{split}
\end{equation}
}
\end{leftvert}
\newpage
\begin{tleftvert}
\par
\lipsum[1-3]
\begin{equation}
\begin{split}
some &= long\\ &= long\\ &= long\\ &= long\\ &= long\\ &= long\\
&= long\\ &= long\\ &= long\\ &= long\\ &= long\\ &= long\\
&= equation.
\end{split}
\end{equation}
\end{tleftvert}
\end{document}