\documentclass{article}
\usepackage{tabularray}
\ExplSyntaxOn
\seq_gclear:N \g_tmpa_seq
\int_step_inline:nnn {0} {18} {
\seq_put_right:Nn \l_tmpa_seq {
$\sin #1^\circ = \fp_eval:n {sin(#1 * \c_one_degree_fp)}$
}
\int_compare:nNnT {#1} > {0} {
\int_compare:nNnTF {\int_mod:nn {#1 + 1} {3}} = {0} {
\seq_put_right:Nx \g_tmpa_seq {
\seq_use:Nn \l_tmpa_seq {\\}
}
}
{
\seq_put_right:Nx \g_tmpa_seq {
\seq_use:Nn \l_tmpa_seq {&}
}
}
\seq_clear:N \l_tmpa_seq
}
}
\ExplSyntaxOff
\begin{document}
\ExplSyntaxOn
\centering
\begin{tblr}{|c|c|c|}
\seq_use:Nn \g_tmpa_seq {\\}
\end{tblr}
\par
\ExplSyntaxOff
\end{document}
上面代码使用tabularray宏包后,会出现这种报错,请问大佬们这是为什么呢?麻烦了,谢谢
erewhon-math.zip
第一,你的这个代码逻辑有问题。
第二,tblr
不会自动展开它的内容,必须使用 expand
选项设置要展开的命令,否则这个命令的内容会进入到某一个单元格中。
代码并不复杂:
\ExplSyntaxOn
\tl_clear:N \l_my_tmp_tl
\int_step_inline:nnn { 0 } { 18 }
{
\tl_put_right:Nn \l_my_tmp_tl
{ $ \sin #1^\circ = \fp_eval:n { sin( #1 * \c_one_degree_fp ) } $ }
\int_compare:nNnTF { \int_mod:nn { #1+1 } { 3 } } = { 0 }
{ \tl_put_right:Nn \l_my_tmp_tl { \\ } }
{ \tl_put_right:Nn \l_my_tmp_tl { & } }
}
\centering
\begin{tblr}[expand=\l_my_tmp_tl]{|c|c|c|}
\l_my_tmp_tl
\end{tblr}
\par
\ExplSyntaxOff
另一种排布:
\tl_clear:N \l_my_tmp_tl
\seq_clear:N \l_my_tmpa_seq
\seq_clear:N \l_my_tmpb_seq
\seq_clear:N \l_my_tmpc_seq
\int_step_inline:nnn { 7 } { 12 }
{
\seq_put_right:Nn \l_my_tmpb_seq
{ $ \sin #1^\circ = \fp_eval:n { sin( #1 * \c_one_degree_fp ) } $ }
}
\int_step_inline:nnn { 13 } { 18 }
{
\seq_put_right:Nn \l_my_tmpc_seq
{ $ \sin #1^\circ = \fp_eval:n { sin( #1 * \c_one_degree_fp ) } $ }
}
\int_step_inline:nnn { 0 } { 6 }
{
\tl_set:Nn \l_my_tmpa_tl { $ \sin #1^\circ = \fp_eval:n { sin( #1 * \c_one_degree_fp ) } $ }
\seq_pop_left:NNF \l_my_tmpb_seq \l_my_tmpb_tl
{ \tl_set_eq:NN \l_my_tmpb_tl \c_empty_tl }
\seq_pop_left:NNF \l_my_tmpc_seq \l_my_tmpc_tl
{ \tl_set_eq:NN \l_my_tmpc_tl \c_empty_tl }
\tl_put_right:Nx \l_my_tmp_tl
{ \exp_not:o \l_my_tmpa_tl & \exp_not:o \l_my_tmpb_tl & \exp_not:o \l_my_tmpc_tl \exp_not:N \\ }
}
\begin{tblr}[expand=\l_my_tmp_tl]{|c|c|c|}
\l_my_tmp_tl
\end{tblr}
\par
另外,TeX 的计算结果并不一定十分准确,专业的计算交给专业的软件。
这里的
expand
指的是tblr
环境的选项,应该看tabularray
宏包的说明文档。@u10307 谢谢大佬