枚举内环境的对齐

枚举内环境的对齐

我定义了一个环境来添加注释,即一些与当前问题不严格相关但可能仍然有趣的文本,通过

\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}

在此处输入图片描述

相关内容