![动态表格前导字符串](https://linux22.com/image/471757/%E5%8A%A8%E6%80%81%E8%A1%A8%E6%A0%BC%E5%89%8D%E5%AF%BC%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
我想提供一个围绕 tabularx 的包装器,以便让用户定义整体内容对齐方式,而无需定义表格边框样式。
类似下面的内容。用户仍然可以定义列内容对齐和间距(例如 p 列),并且上述atable
环境(应该)会默默添加边框样式并生成前导字符串c|c
。如果是 5 列表,我会使用c|c|c|c|c
前导字符串。
\documentclass{article}
\usepackage{tabularx}
\usepackage{xparse}
\newenvironment{atable}[2][]
{%
\tabularx{\linewidth}{#1}%
#2 \tabularnewline \hline %
}
{\endtabularx}
\begin{document}
\begin{atable}[cX]{Header 1 & Header 2}
Content 1 & Content 2 \tabularnewline \hline
\end{atable}
\end{document}
我考虑实现这一点的方法是将输入前导字符串视为一个列表,并将每个项目与|
分隔符连接起来,最后将结果传递给 tabularx 环境。
尽管有大量关于使用 for 循环和 expl3 解决方案处理动态表格内容的文献,但我没有找到任何关于如何将前导字符串模块化的文章。我确实发现表格环境有一些语法糖来重复列,但这不是我想要的。
具体来说,我相信我所缺少的是如何生成由循环表达式生成的延迟可扩展命令,其中循环逐步构建前导字符串。
我尝试将 expl3 文档与在互联网上找到的示例进行匹配,但我对其语法感到困惑,并且无法真正掌握找到的解决方案的实际作用。
您能否向我指出实现我所寻找的正确方法?
一些背景知识使上下文更加清晰。我目前正在编写一个带有两个演示文稿 A 和 B 的自定义类。我将使用 tabularx 包装器根据所选的演示文稿提供一致的表格:例如,演示文稿 A 将在列之间有所有垂直线,而演示文稿 B 将只有外部边框。