我想将变量中的字符串拆分成表格中的多个单元格。代码如下:
\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}