显示包含 `&` 和 `\hline` 标记的 `\_tl` 变量

显示包含 `&` 和 `\hline` 标记的 `\_tl` 变量

自动创建表需要\_tl为 和 的部分生成变量formatheader最好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 modesubscriptssuperscripts

\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当我想在输入流中传递标记列表变量的内容时,我通常会添加它;它是可选的,但使用它似乎更一致。

相关内容