![如何创建列表并将其分配给变量?](https://linux22.com/image/358879/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E5%88%97%E8%A1%A8%E5%B9%B6%E5%B0%86%E5%85%B6%E5%88%86%E9%85%8D%E7%BB%99%E5%8F%98%E9%87%8F%EF%BC%9F.png)
我需要创建一个逗号(或其他任何形式)分隔的单词列表以供将来使用,并将其分配给变量(宏)。列表中的单词应放在单独的行中。当我将其用于此目的时,\def
需要在行尾\newcommand
添加百分号。%
如何避免使用该%
标志?
我的想法是使用 expl3 创建列表:
\NewDocumentCommand{\makelist}{ m m}
{
\tl_set:Nx \l_ty_tl {#1}
\csc_new:nn {#2}{\tl_use:N \l_ty_tl}
}
并像使用它一样
\makelist{
Elstat,
Magstat,
Current
}{\mylist}
\multiinclude{\mylist}
下面的 MWE
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\multiinclude}{ mO{} }
{
\tl_set:Nx \l_ty_tl {#2}
%\clist_map_inline:Nn #1 { \include{##1\l_ty_tl}} <= real usage
\clist_map_inline:Nn #1 { ##1\l_ty_tl} %<= for MWE
}
\ExplSyntaxOff
\begin{document}
\newcommand\mylist{%
Elstat,%
Magstat,%
Current}
\chapter{Problems}
\multiinclude{\mylist}[]
\chapter{Answers}
\multiinclude{\mylist}[-AnswersFile]
\end{document}
答案1
你必须“规范化”该列表:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\multiinclude}{ mO{} }
{
\clist_set:Nx \l_sergio_mi_clist { #1 }
\clist_map_inline:Nn \l_sergio_mi_clist { \noindent ##1 #2 \par }
}
\ExplSyntaxOff
\begin{document}
\newcommand\mylist{
Elstat,
Magstat,
Current
}
\section{Problems}
\multiinclude{\mylist}[]
\section{Answers}
\multiinclude{\mylist}[-AnswersFile]
\end{document}
另一方面,我会避免\newcommand
使用列表,而是直接使用名称:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\multiinclude}{ m O{} }
{
\clist_map_inline:cn { l_sergio_list_#1_clist } { \noindent ##1 #2 \par }
}
\NewDocumentCommand{\makelist}{ mm }
{
\clist_set:cn { l_sergio_list_#1_clist } { #2 }
}
\ExplSyntaxOff
\begin{document}
\makelist{mylist}{
Elstat,
Magstat,
Current
}
\section{Problems}
\multiinclude{mylist}[]
\section{Answers}
\multiinclude{mylist}[-AnswersFile]
\end{document}