格式化 FOCUS 组件规范

格式化 FOCUS 组件规范

我正在尝试使用 LaTeX 在 FOCUS 框架*中编写规范。此类规范具有以下语法形式: FOCUS 规范语法

我曾尝试使用 tabularx 来解决这个问题,但毫无进展。标题尤其棘手,我觉得这不是解决问题的办法,因为我必须将声明和正文嵌入到表格单元格中。FOCUS 规范的正文可以是任何东西,从布尔公式到图形,因此通用解决方案必须非常灵活。

是否有任何包可以创建像这样的盒子?

* Broy, M., & Stølen, K. (2012)。交互式系统的规范和开发:重点关注流、接口和细化。Springer Science & Business Media。

答案1

欢迎来到 TeX.SX!您可以尝试tcolorbox

\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{skins}

\NewTColorBox{focuscomponent}{ O{} m m }{
    enhanced,
    frame empty,
    boxsep=13.5pt,
    left=0pt,
    right=0pt,
    top=0pt,
    bottom=0pt,
    middle=0pt,
    colback=white!0,
    coltitle=black,
    segmentation style={solid, black},
    fontupper=\itshape,
    fontlower=\itshape,
    overlay={
        \draw (interior.south east) -- (interior.south west) -- 
            ([yshift=2pt]interior.north west) -- 
            ([yshift=2pt]interior.north east);
        \draw (interior.north west) -- (interior.north east); 
        \node[font=\itshape, anchor=base west, fill=white, inner sep=3.5pt] 
            at ([xshift=10pt]interior.north west) {#2};
        \node[font=\itshape, anchor=base east, fill=white, inner sep=3.5pt] 
            at ([xshift=-10pt]interior.north east) {#3};
    },
}

\NewDocumentEnvironment{focusitemize}{ }{
    \begin{list}{}{
        \renewcommand\makelabel[1]{\normalfont\sffamily ##1}
        \setlength{\leftmargin}{3em}
        \setlength{\itemindent}{0pt}
        \setlength{\labelsep}{0pt}
        \setlength{\labelwidth}{3em}
    }
}{
    \end{list}
}

\begin{document}
    \begin{focuscomponent}{Name}{Frame\_Labels}
        \begin{focusitemize}
            \item[in] Input\_Declarations 
            \item[out] Output\_Declarations
        \end{focusitemize}
        \tcblower
        Body
    \end{focuscomponent}
\end{document}

在此处输入图片描述

相关内容