LaTeX/plain TeX 宏:使用自定义边框和填充来设置框的样式

LaTeX/plain TeX 宏:使用自定义边框和填充来设置框的样式

我想创建一个 LaTeX 环境,用于样式化的盒子,而不使用任何额外的包,只需定义一些线条和空格。我已经取得了很大进展,但在这个例子中,我想象的最后一行失败了,我意识到我还没有对底层盒子模型有正确的印象。

目标:带有自定义边框线、一些填充以及内部可能包含任何其他 LaTeX 命令的框。在这种情况下,我想象一个框,左侧有一条粗线和一条细线,而较细的线与顶部短水平段的左端相连,而右侧就像是它的 180° 旋转副本,只是没有较粗的线。

在我的班级档案中我已经意识到了这一点

\newenvironment{interrupt} {%
    \vspace{2em}%
    \noindent%
    \hspace{2.5pt}\rule{2em}{.2pt}\hspace{-2em}\hspace{-2.5pt}%
    \vline width .8pt%
    \hspace{1.5pt}%
    \vline width .2pt%
    \hspace{2em}%
    \begin{minipage}[t]{.9\linewidth}
    \vspace{1em}%
} {%
    \vspace{.5em}%
    \end{minipage}%
    %\vfill
    \hspace{2em}\vline width .2pt%
    \vfill%
    %\hspace{-2em}%
    \hfill%
    \rule{2em}{.2pt}%
    \vspace{2em}%
}

但右下角部分的表现并不像我预期的那样,我尝试的所有对齐方法都失败了。那么我哪里想错了呢?

如果有好的资源详细解释这一点而我却错过了,请链接它!

附加问题:OT,但与示例相关,使内框动态使用所有可用空间减去所需填充的最佳方法是什么?

编辑:根据要求,提供我的具体案例的最小示例

\documentclass[a4paper]{article}

\makeatletter

\newenvironment{interrupt} {%
    \vspace{2em}%
    \noindent%
    \hspace{2.5pt}\rule{2em}{.2pt}\hspace{-2em}\hspace{-2.5pt}%
    \vline width .8pt%
    \hspace{1.5pt}%
    \vline width .2pt%
    \hspace{2em}%
    \begin{minipage}[t]{.9\linewidth}
    \vspace{1em}%
} {%
    \vspace{.5em}%
    \end{minipage}%
    %\vfill
    \hspace{2em}\vline width .2pt%
    %\vfill%
    %\hspace{-2em}%
    %\hfill%
    \rule{2em}{.2pt}%
    \vspace{2em}%
}

\makeatother


\begin{document}

Bla, bla blabla bla, bla.\\
Ba di da bla

\begin{interrupt} % the session and discussion is interrupted
    % and may be continued in the same context later
    How nice, a custom sample text.

    \begin{tabular}{c | c c}
        1   & 2 & 3\\\hline
        4   & 5 & 6\\
        7   & 8 & 9
    \end{tabular}
\end{interrupt}

Back to same bla\dots

\end{document}

右水平段应附着在下端,指向左侧

答案1

在此处输入图片描述

\documentclass[a4paper]{article}

\makeatletter

\newenvironment{interrupt} {%
    \par
    \addvspace{2em}%
    \noindent\hspace{2.5pt}\rule{2em}{.2pt}\hspace{\dimexpr-2.5pt-2em}%
    \vline width .8pt %
    \hspace{1.5pt}%
    \vline width .2pt %
    \hspace{2em}%
    \begin{minipage}[t]{\dimexpr\linewidth-5pt-4em}
    \vspace{1em}%
} {%
    \vspace{.5em}%
    \end{minipage}%
    \hspace{2em}%
    \vline width .2pt %
    \par
    \parskip0pt
    \nointerlineskip
    \noindent\hfill\rule{2em}{.2pt}\hspace*{2.5pt}%
    \par
    \addvspace{2em}%
}

\makeatother


\begin{document}

Bla, bla blabla bla, bla.\\
Ba di da bla

\begin{interrupt} % the session and discussion is interrupted
    % and may be continued in the same context later
    How nice, a custom sample text.

    \begin{tabular}{c | c c}
        1   & 2 & 3\\\hline
        4   & 5 & 6\\
        7   & 8 & 9
    \end{tabular}
\end{interrupt}

Back to same bla\dots

\end{document}

相关内容