自动创建表需要\_tl
为 和 的部分生成变量format
,header
最好content
每个变量都\tabular environment
放在自己的 中\cs_ macros
。在 的帮助下,TeX/SX
我让所有工作都正常进行,但仍有一个麻烦。在将内容泵入变量时\l_rn_tabular_tl
,在这个手动完成的 MWE 中,我必然需要字符&
,并且当然也希望有\hline
。虽然\l_rn_tabular_tl
在插入 时可以完成工作,但如果尝试显示变量,\tabular environment
它将抛出!Misplaced \noalign
的错误\hline
和字符!Misplaced alignment tab character &
的错误。使用不会产生任何输出,有趣的是,如果添加 则会抛出。考虑到将内容泵入变量可能是一个非常复杂的过程,不能检查变量使我失去了主要的错误跟踪工具。有什么解决方法吗?其次,我很高兴看到 可以工作,除了不起作用,而起作用。&
\tl_show:N
\\
!LaTeX Error: There's no line here to end
$...$ mathematics mode
subscripts
superscripts
\documentclass{article}
% RN. 24 November 2017
% BRIEF DESCRIPTION:
% %=======================
\usepackage[check-declarations]{expl3}
\usepackage{xparse}
%-----------------------
\ExplSyntaxOn
\tl_new:N \l_rn_tabular_tl
\NewDocumentCommand\myTable{}
{
\tl_set:Nn \l_rn_tabular_tl {\hline Master~Col.& First~Col.&Second~Col.&Third~Col.\\hline\hline 1&$x^{23}$&$b_3&\\2&$\Omega$&ccc&\\3&xx&&\\4&&&df\\5&&&\\6&&&qwer5\\\hline}
%%%%%%%%%%%%%%%%%%%%%%%%%
% \l_rn_tabular_tl \\ERRORs
%%%%%%%%%%%%%%%%%%%%%%%%%
\tl_show:N \l_rn_tabular_tl %\\
\begin{tabular}{|c||c|c|c|}
\l_rn_tabular_tl
\end{tabular}
}
\ExplSyntaxOff
%-----------------------
\begin{document}
\myTable
\end{document}
答案1
让我们逐行检查您的代码。
1 \tl_set:Nn \l_rn_tabular_tl {\hline Master~Col.& First~Col.&Second~Col.&Third~Col.\\hline\hline 1&$x^{23}$&$b_3&\\2&$\Omega$&ccc&\\3&xx&&\\4&&&df\\5&&&\\6&&&qwer5\\\hline}
2 \l_rn_tabular_tl
3 \\
4 \tl_show:N \l_rn_tabular_tl
5 \\
6 \begin{tabular}{|c||c|c|c|}
7 \l_rn_tabular_tl
8 \end{tabular}
由于我们处于 之下,因此将令牌移至新线路并不重要\ExplSyntaxOn
。
第 1 行:设置一个标记列表变量。
第 2 行:变量似乎脱离了上下文;毕竟,它是一个 TeX 宏,它会被展开。由于放错了位置&
并且\hline
超出了表格的上下文,因此会出现错误。
第 3 行:在出现多次错误之后,您会得到一个强制换行符,这也可能会产生错误。
第 4 行:这是查看变量内容的正确方法。
第 5 行:\\
基本上不合适。
总而言之,您应该\tl_show:N
在填充令牌列表变量后使用:
\NewDocumentCommand\myTable{}
{
\tl_set:Nn \l_rn_tabular_tl {\hline Master~Col.& First~Col.&Second~Col.&Third~Col.\\hline\hline 1&$x^{23}$&$b_3&\\2&$\Omega$&ccc&\\3&xx&&\\4&&&df\\5&&&\\6&&&qwer5\\\hline}
%\tl_show:N \l_rn_tabular_tl % uncomment for debugging
\begin{tabular}{|c||c|c|c|}
\tl_use:N \l_rn_tabular_tl
\end{tabular}
}
\tl_use:N
当我想在输入流中传递标记列表变量的内容时,我通常会添加它;它是可选的,但使用它似乎更一致。