使用 latex 描述文件格式的语法

使用 latex 描述文件格式的语法

我偶然看到一篇论文,其中 STL 文件格式如下所述。

STL 文件格式

我非常有兴趣使用类似的东西,但我不知道如何实现这一点。

答案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}上标 + 的将不会打印。

\>命令稍微被滥用了,但它似乎是一种根据需要缩进代码的简单方法。

在此处输入图片描述

相关内容