在 LaTeX 中制作表格形式的结构化信息块

在 LaTeX 中制作表格形式的结构化信息块

我想以结构化、表格或表单的方式布局一些信息。基本上,每个“块”都有多个字段,如标题、说明和其他内容,我想像这样显示它们:

在此处输入图片描述

我在 Word 中制作了这个示例,其中我使用了一个复杂的表格结构。如您所见,每个“行”都有可变数量的“列”,并且宽度不同,所以我认为表格在 LaTeX 中不起作用。不同的单元格也有不同的格式。

我对如何做到这一点有几个不同的想法,但我觉得它们都是些小技巧,而不是“正确答案”。我还希望将演示与内容分开,以便以后能够使用其他字段/不同间距来调整演示。

我该如何做呢?

答案1

对于这类问题,最好从输入,即您的用户界面,尤其是当它由人输入时。如果数据是由计算机生成的,那么就不必太担心这一点。首先简化和定义您的结构总是好的。在您的例子中,它有一个简单的结构,我会选择这样的输入:

\title This is the Title;  
\infoi This is the first info block ;
\infoii This is the second info block ;
\texti This is the first text block;
\textii This is the second text block;
\textiii This is the third text block;

如果您喜欢花括号,您可以重新定义底部的最小值并使用它们,但是如果您需要进行大量捕获,这可能会变得麻烦。

\title{This is the Title}  
\infoi{This is the first info block}

将关注点和演示与数据分开是件好事。对于演示,您可以编写一个宏\render。我会使用minipagesparboxes固定宽度的整个或任何其他可用的装箱宏。在示例中,我使用了简单的fboxes 来说明该技术。还请注意,我使用了 through\def而不是\newcommand为了清晰起见。如果您觉得使用 s 不舒服,请替换\def

\documentclass{article}
\makeatletter
\newenvironment{blockquote}{
   \bgroup
   \parskip0pt
   \def\title##1;{\def\@title{##1}}
   \def\infoi##1;{\def\@infoi{##1  }}
   \def\infoii##1;{\def\@infoii{##1}}
   \def\texti##1;{\def\@texti{##1}}
   \def\textii##1;{\def\@textii{##1}}
   \def\textiii##1;{\def\@textiii{##1}}
   \def\render{\fbox{\@title}\par
                     \fbox{\@infoi \@infoii}\par
                     \fbox{\@textii}\par
                     \fbox{\@textii}\par
                     \fbox{\@textiii} %
    }
}{\egroup
}

\makeatother
\begin{document}

\blockquote
\title This is the Title;  
\infoi This is the first info block ;
\infoii This is the second info block ;
\texti This is the first text block;
\textii This is the second text block;
\textiii This is the third text block;
\render
\endblockquote

\end{document}

请注意,这项\render工作为代码的展示方面做了所有繁琐的工作。您需要花时间来定义您想要的外观。

答案2

  1. 思考不同行的所有可能性。
  2. 构造行。(标题、副标题/描述、项目……)
  3. 找出不同行的参数和参数。(参数通常是行与行之间的差异,即使它们属于同一类型。[在您的示例中是“Blah blah”。] 参数通常是同一类型行的相同内容。[在您的示例中可能是“Text 1”……,以及格式属性 [蓝色背景、字体问题、间隙/偏移的宽度])
  4. 按照2中的结构来构造参数的继承。
  5. 通过 TeX 进行
    • 单行宏
    • 参数的宏,在行宏内部调用
    • 针对不同种类的行的宏,相应地改变参数宏

  • 使用现有包来处理可选参数(,,,pgfkeys... )xkeyvalxparse

相关内容