我定义了一个环境来添加注释,即一些与当前问题不严格相关但可能仍然有趣的文本,通过
\usepackage[framemethod=tikz]{mdframed}
\newmdenv[
topline=false,
bottomline=false,
rightline=false,
innerrightmargin=0pt
]{siderule}
\newenvironment{note}%
{\begin{siderule}\textbf{Note:}}
{\end{siderule}}
除了一种情况外,它运行良好:将此环境插入到枚举中时,侧面规则会直接穿过枚举标签,就像这样。
关于如何修改环境定义以解决此问题,您有什么想法吗?我希望标签(a)
与列表中的其他标签水平对齐,其他所有内容保持不变。我希望解决方案尽可能优雅。我觉得这不需要任何深层TeX
编码或摆弄不同长度的文字值。
该图片是使用此 MWE 创建的。
\documentclass{scrartcl}
\usepackage{blindtext}
\usepackage[framemethod=tikz]{mdframed}
\newmdenv[
topline=false,
bottomline=false,
rightline=false
]{siderule}
\newenvironment{note}%
{\begin{siderule}\textbf{Note:}}
{\end{siderule}}
\begin{document}
\begin{enumerate}
\item \begin{note}
\blindtext
\end{note}
\item \blindtext
\end{enumerate}
\blindtext
\end{document}
答案1
您可以使用以下方式控制所需的间距
leftmargin=-3pt, innerleftmargin=3pt, innerrightmargin=0pt,
代码:
\documentclass{scrartcl}
\usepackage{blindtext}
\usepackage{showframe}
\usepackage{enumitem}
\usepackage[framemethod=tikz]{mdframed}
\newmdenv[
topline=false,
bottomline=false,
rightline=false,
leftmargin=-3pt, innerleftmargin=3pt, innerrightmargin=0pt,
linecolor=red,
]{siderule}
\newenvironment{note}%
{\begin{siderule}\textbf{Note:}}
{\end{siderule}}
\begin{document}
\begin{enumerate}
\item \begin{note}
\blindtext
\end{note}
\item \blindtext
\end{enumerate}
\blindtext
\end{document}
答案2
使用这种方法,我不会note
在枚举中启动环境,直到我发出\leavevmode
。这建立了正确的水平偏移量。不幸的是,它还会在 1+ 行以下开始注释环境。在我最初的答案中,我在环境\vspace
之前用 进行补偿note
。然而,由于可压缩胶水,所需的 值\vspace
可能会发生变化。
在这个编辑版本中,我将note
环境保存在\vbox
名为中\blob
。然后我将\blob
其输出为高于基线的 22.1367pt。我明确地将值指定为21.1367pt
;但是,理论上可以将该值重现为\baselineskip
、\topskip
等的合理组合。我的猜测是可以使用 获得该值\setbox0=\hbox{1}\the\dimexpr\baselineskip+\topskip-\ht\strutbox+\ht0
,但我只是猜测。
\documentclass{scrartcl}
\usepackage{blindtext}
\usepackage[framemethod=tikz]{mdframed}
\newmdenv[
topline=false,
bottomline=false,
rightline=false
]{siderule}
\newenvironment{note}%
{\begin{siderule}\textbf{Note:}}
{\end{siderule}}
\usepackage{stackengine}
\begin{document}
\begin{note}
\blindtext
\end{note}
\begin{enumerate}
\item \leavevmode\savestack{\blob}{\vbox{\begin{note}
\blindtext
\end{note}}}\belowbaseline[-22.1367pt]{\blob}
\item \blindtext
\end{enumerate}
\blindtext
\end{document}