tabularx 中的 expl 循环无法创建多个单元格或行

tabularx 中的 expl 循环无法创建多个单元格或行

我想将变量中的字符串拆分成表格中的多个单元格。代码如下:

\documentclass{article}

\usepackage{tabularx}


\ExplSyntaxOn
\makeatletter

\int_new:N\textindex
\int_new:N\textindexend
\int_new:N\textcount
\NewDocumentCommand{\tablecontent}{}{
  \int_set:Nn\textindex{1}
  \int_set:Nn\textindexend{10}
  \int_set:Nn\textcount{\str_count:N \foo}
  \int_do_while:nn {\textcount>\textindex} {%
    {\str_range:Nnn \foo \textindex \textindexend} \\
    \int_set:Nn \textindex {\textindex + 10}
    \int_set:Nn \textindexend {\textindexend + 10}
  }}

\begin{document}
\section{foo}

\def \foo {aoesantoestnaoeuhtnoseuhnoauhnaosuh}

\tablecontent \\

\begin{tabularx}{\textwidth}{c|c}
  \hline
  \tablecontent \\
  \hline
\end{tabularx}

\end{document}

结果就在这里。

在此处输入图片描述

正文内容分成几行,但没有表格。

甚至,如果我再加&上前面的{str_range:Nnn ...}(去掉表格外的内容),就会变成这样: 在此处输入图片描述

那里什么都没显示。我该如何解决这个问题?

预期行动

我想制作如下表格:

在此处输入图片描述

PS 我需要下划线foo[...],它不同于下划线,并且与其他线条具有相同的样式、宽度和高度。因此,我想使用表格而不是其他表格。

答案1

以下是针对您的代码的快速修复。最好先收集所有表体:

\documentclass{article}

\usepackage{tabularx}

\ExplSyntaxOn
\int_new:N\textindex
\int_new:N\textindexend
\int_new:N\textcount
\NewDocumentCommand{\tablecontent}{}{
  \int_set:Nn\textindex{1}
  \int_set:Nn\textindexend{10}
  \int_set:Nn\textcount{\str_count:N \foo}
  \tl_clear:N \l_tmpa_tl
  \int_do_while:nn {\textcount>\textindex} {%
    \tl_put_right:Nx \l_tmpa_tl {\str_range:Nnn \foo \textindex \textindexend \exp_not:N \\ }
    \int_set:Nn \textindex {\textindex + 10}
    \int_set:Nn \textindexend {\textindexend + 10}
  }
  \l_tmpa_tl
}
\ExplSyntaxOn

\begin{document}

\section{foo}

\def \foo {aoesantoestnaoeuhtnoseuhnoauhnaosuh}

%\tablecontent \\

\begin{tabularx}{\textwidth}{c|c}
  \hline
  \tablecontent
  \hline
\end{tabularx}

\end{document}

在此处输入图片描述


tblr也是我的新 LaTeX3 包环境中的完整解决方案tabularray

\documentclass{article}

\usepackage{tabularray}

\ExplSyntaxOn
\int_new:N\textindex
\int_new:N\textindexend
\int_new:N\textcount
\NewDocumentCommand{\tablecontent}{}{
  \int_set:Nn\textindex{1}
  \int_set:Nn\textindexend{10}
  \int_set:Nn\textcount{\str_count:N \foo}
  \tl_clear:N \mybody
  \int_do_while:nn {\textcount>\textindex} {%
    \tl_put_right:Nx \mybody {
      \exp_not:N &
      \str_range:Nnn \foo \textindex \textindexend
      \exp_not:n { \\ \cline{2-2} }
    }
    \int_set:Nn \textindex {\textindex + 10}
    \int_set:Nn \textindexend {\textindexend + 10}
  }
}
\ExplSyntaxOff

\begin{document}

\section{foo}

\def\foo{aoesantoestnaoeuhtnoseuhnoauhnaosuh}

\tablecontent

\begin{tblr}[expand=\mybody]{rX[c]}
  A & B \\
  \cline{2}
  content \mybody
  C & D \\
\end{tblr}

\end{document}

在此处输入图片描述

相关内容