有人能向我解释一下这是怎么回事吗?为什么没有\seq_show:N
任何输出?
\documentclass{article}
\ExplSyntaxOn
\seq_new:N \l_test
\seq_put_right:Nn \l_test {a}
\begin{document}
\seq_count:N \l_test % returns 1, as expected
\seq_show:N \l_test % returns nothing
\end{document}
答案1
\seq_show:N
打印到终端和文件.log
(\seq_log:N
仅打印到.log
),但不产生任何排版输出。如果您从 IDE(通常隐藏终端输出)运行 LaTeX,则必须打开文件.log
才能查看输出:
The sequence \l_test_seq contains the items (without outer braces):
> {a}
> {b}.
也就是说,您可以轻松模仿该行为并创建一个对序列内容进行排版的函数:
\documentclass{article}
\ExplSyntaxOn
\seq_new:N \l_test_seq
\seq_put_right:Nn \l_test_seq {a}
\seq_put_right:Nn \l_test_seq {b}
\cs_new_protected:Npn \mjc_seq_print:N #1
{
\seq_if_empty:NTF #1
{ The~sequence~\token_to_str:N #1~is~empty. }
{
The~sequence~\token_to_str:N #1~contains~
the~items~(without~outer~braces):
\seq_map_inline:Nn #1
{ \\ >~\use:n { ~ } \char`{~ ##1 \char`}~ } .
}
}
\ExplSyntaxOff
\begin{document}
\ExplSyntaxOn
\seq_count:N \l_test_seq % returns 1, as expected
\seq_show:N \l_test_seq % returns nothing
\par
\noindent
\texttt{\mjc_seq_print:N \l_test_seq} % returns nothing
\end{document}