答案1
使用花括号括起来的表格手动解决方案(基于跨越多行的花括号(无数学环境)):
\documentclass{article}
\begin{document}
\noindent\textbf{solid} \textit{name}\\
$\left\{
\begin{tabular}{@{}l@{}}
\textbf{facet normal} $n_i n_j n_k$ \\
\hspace{1em}\textbf{outer loop} \\
\hspace{2em}\textbf{vertex} $v1_x\ v1_y\ v1_z$\\
\hspace{2em}\textbf{vertex} $v2_x\ v2_y\ v2_z$\\
\hspace{2em}\textbf{vertex} $v3_x\ v3_y\ v3_z$\\
\hspace{1em}\textbf{endloop}\\
\textbf{endfacet}
\end{tabular}
\right\}^+$\\
\textbf{endsolid} \textit{name}
\end{document}
答案2
我将定义一个环境,用 构建单个块,tabular
并用嵌套的 构建内部部分tabular
。
\documentclass{article}
\NewDocumentEnvironment{stl}{t+mm}
{% #1 = optional +, #2 = key, #3 = name
\renewcommand{\>}{\quad\ignorespaces} % use \> to `advance'
\begin{tabular}{@{}l@{}}
\stlkey{#2} \textit{#3} \\
$\left\lbrace\begin{tabular}{@{}l@{}}
}
{%
\end{tabular}\right\rbrace\IfBooleanT{#1}{^+}$ \\
\stlkey{end#2} \textit{#3}
\end{tabular}
}
\NewDocumentCommand{\stlkey}{m}{\textbf{#1}}
\begin{document}
\begin{stl}+{solid}{name}
\stlkey{facet normal} $n_i n_j n_k$ \\
\> \stlkey{outer loop} \\
\>\> \stlkey{vertex} $v1_x\ v1_y\ v1_z$\\
\>\> \stlkey{vertex} $v2_x\ v2_y\ v2_z$\\
\>\> \stlkey{vertex} $v3_x\ v3_y\ v3_z$\\
\> \stlkey{endloop}\\
\stlkey{endfacet}
\end{stl}
\end{document}
\usepackage{xparse}
如果运行 2020-10-01 之前发布的 LaTeX,则需要此版本。
仅当您按照上述代码指定时,才会添加上标 +。带有\begin{stl}{solid}{name}
上标 + 的将不会打印。
该\>
命令稍微被滥用了,但它似乎是一种根据需要缩进代码的简单方法。