在宏中插入具有超过 9 个参数的条件

在宏中插入具有超过 9 个参数的条件

我有一张 Excel 表格,其中包含几条描述档案中文档的条目。然后我想将整个表格转换为格式化的段落,其中每行都作为一个单元出现。然后我生成了一个包含 14 个参数的命令。从这里开始:如何定义接受超过 9 个参数的命令 到目前为止,我对结果感到满意。现在我想引入一个条件:当某个特定字段为空时,整个字段不应出现。在这种情况下:一些注释为空。我如何才能消除此实例中的注释(例如:第一个)。我尝试使用 \IfNoValue 和 \ifblank,但没有成功。此外,我在不同的帖子中看到这不是可行的方法。您还有其他方法可以将表格表示为段落吗?

\documentclass{article}
\usepackage{xparse}
\usepackage{etoolbox}
\ExplSyntaxOn
\NewDocumentCommand{\NewWeirdCommand}{mmm}
 {% #1 = command to define, #2 = number of arguments, #3 = replacement text
  \cs_new:Npn #1
   {
    \tl_set:Nn \l__simon_parse_args_tl { #3 }
    \__simon_parse_args:n { #2 }
   }
 }
\NewDocumentCommand{\Arg}{m}
 {
  \seq_item:Nn \l__simon_parse_args_seq { #1 }
 }

\tl_new:N \l__simon_parse_args_tl
\seq_new:N \l__simon_parse_args_seq
\int_new:N \l__simon_parse_args_int

\cs_new_protected:Nn \__simon_parse_args:n
 {
  \seq_clear:N \l__simon_parse_args_seq
  \int_zero:N \l__simon_parse_args_int
  \__simon_parse_arg:n { #1 }
 }
\cs_new_protected:Nn \__simon_parse_arg:n
 {
  \int_incr:N \l__simon_parse_args_int
  \int_compare:nNnTF { \l__simon_parse_args_int } > { #1 }
   {
    \tl_use:N \l__simon_parse_args_tl
   }
   {
    \__simon_parse_arg_aux:nn { #1 }
   }
 }
\cs_new_protected:Nn \__simon_parse_arg_aux:nn
 {
  \seq_put_right:Nn \l__simon_parse_args_seq { #2 }
  \__simon_parse_arg:n { #1 }
 }
\ExplSyntaxOff

\NewWeirdCommand{\donnee}{14}{%
\noindent\textbf{Carton:} \Arg{11}\hfill   \textbf{Numero:} \Arg{1}\hfill   \textbf{Image:} \Arg{12} \hfill   \textbf{Année:} {\bf\Arg{6}}\\%
 \textbf{Type:} \Arg{2}: ``{\it \Arg{3}}'' \\ %
\textbf{Auteur:}  \Arg{7} \\ \textbf{Défense:} \Arg{9}  \\ %(\Arg{8}) 
 \textbf{Origine:} \Arg{4} \hspace{1cm} \textbf{Recours:} \Arg{5} \\%
\textbf{Notes:} \Arg{13}
}

\begin{document}


\donnee{31}{Crime}{Escravizar pessoa livre}{Ville}{NI}{1856}{João António de Sousa Moranha}{H}{António Joaquim Monteiro}{H}{1}{3128}{}{} \\ 

\donnee{32}{Crime}{Furto}{Ville}{NI}{1856}{Ministério Público; Feleno José neto Alberto}{H}{Sanango, escravo de António Joaquim Monteiro}{H}{1}{3129}{Furto praticado pelos escravos de Antonio Joaquim Monteiro, no distrito da Catumbela}{} \\ 

\donnee{33}{Crime}{Autos crime}{Ville}{NI}{1856}{Ministério Público}{NI}{Paisano João Pilartes da Silva}{H}{1}{3130}{Auto de notícia do paisano João Pilarte da Silva implicado na guerra que ultimamente invadiu o distrito de Quilengues}{} \\ 

\donnee{34}{Cível}{Justificação}{Ville}{NI}{1856}{António Martins Bastos}{H}{NI}{NI}{1}{3131}{}{} \\ 

\donnee{35}{Cível}{Execução}{Ville}{NI}{1856}{Ministério Público}{NI}{António Macedo Moreira de Campos}{H}{1}{3132}{Execução por décimas}{} \\ 

\donnee{57}{Cível}{Execução}{Ville}{NI}{1856}{Ministério Público}{NI}{Bernardino Fernandes Silva}{H}{1}{3154}{Sem capa, informações obtidas da petição; execução fiscal; réu passou letra inconclusa}{} \\ 

\donnee{87}{Cível}{Reivindicação}{Ville}{NI}{1856}{Cabinda Fernando da Costa Carmo}{H}{Dona da escrava - Dona Anna Martins de Sant Anna}{M}{1}{3184}{}{} \\ 

\donnee{36}{Crime}{Furto de escravos}{Ville}{Ville}{1857}{Ministério Público}{NI}{Jose Rodrigues Suame; Semamba Dom Cosme; Fernando da Cunha; José Macombo; todos pretos Cabindas}{H}{1}{3133}{Recurso por furto de três escravos pertencentes a Dona Maria Dias de Jesus}{} \\ 

\donnee{37}{Crime}{Mandar amarrar um preto livre}{Ville}{NI}{1857}{Ministério Público}{NI}{André Velasco Galiano; Guilhermino Jozé Jeremias}{H}{1}{3134}{Autos de busca e corpo de delito contra André Vellasco Galiano pelo crime de mandar amarrar um preto sertanejo, livre, de nome Cacumba}{} \\ 

\end{document}

答案1

例如:

\newcount\argnum
\def\argsdef#1#2{\def#1{\argnum=1\def\useargs{#2}\inargs}}
\def\inargs{\futurelet\next\inargsA}
\def\inargsA{\ifx\next\bgroup \expandafter\inargsB \else \expandafter\useargs \fi}
\def\inargsB#1{\expandafter\def\csname Arg:\the\argnum\endcsname{#1}%
   \advance\argnum by1 
   \inargs}
\def\arg#1{\csname Arg:#1\endcsname}

\argsdef\donnee{%
 \noindent {\bf Carton:} \arg{11}\hfill 
 {\bf Numero:} \arg{1}\hfill  {\bf Image:} \arg{12} \hfill 
 {\bf Année:} {\bf\arg{6}} \hfil\break
 {\bf Type:} \arg{2}: ``{\it \arg{3}}'' \hfil\break
 {\bf Auteur:} \arg{7} \hfil\break 
 {\bf Défense:} \arg{9}  \hfil\break %(\Arg{8}) 
 {\bf Origine:} \arg{4} \hskip 1cm {\bf Recours:} \arg{5} \hfil\break
 \if\relax\arg{13}\relax \null \else {\bf Notes:} \arg{13}\fi % test if arg13 is empty
}

\donnee{31}{Crime}{Escravizar pessoa livre}{Ville}{NI}{1856}{João António de Sousa Moranha}{H}{António Joaquim Monteiro}{H}{1}{3128}{}{} 

\donnee{32}{Crime}{Furto}{Ville}{NI}{1856}{Ministério Público; Feleno José neto Alberto}{H}{Sanango, escravo de António Joaquim Monteiro}{H}{1}{3129}{Furto praticado pelos escravos de Antonio Joaquim Monteiro, no distrito da Catumbela}{} 

\donnee{33}{Crime}{Autos crime}{Ville}{NI}{1856}{Ministério Público}{NI}{Paisano João Pilartes da Silva}{H}{1}{3130}{Auto de notícia do paisano João Pilarte da Silva implicado na guerra que ultimamente invadiu o distrito de Quilengues}{} 

\donnee{34}{Cível}{Justificação}{Ville}{NI}{1856}{António Martins Bastos}{H}{NI}{NI}{1}{3131}{}{} 

\donnee{35}{Cível}{Execução}{Ville}{NI}{1856}{Ministério Público}{NI}{António Macedo Moreira de Campos}{H}{1}{3132}{Execução por décimas}{} 

\donnee{57}{Cível}{Execução}{Ville}{NI}{1856}{Ministério Público}{NI}{Bernardino Fernandes Silva}{H}{1}{3154}{Sem capa, informações obtidas da petição; execução fiscal; réu passou letra inconclusa}{} 

\donnee{87}{Cível}{Reivindicação}{Ville}{NI}{1856}{Cabinda Fernando da Costa Carmo}{H}{Dona da escrava - Dona Anna Martins de Sant Anna}{M}{1}{3184}{}{} 

\donnee{36}{Crime}{Furto de escravos}{Ville}{Ville}{1857}{Ministério Público}{NI}{Jose Rodrigues Suame; Semamba Dom Cosme; Fernando da Cunha; José Macombo; todos pretos Cabindas}{H}{1}{3133}{Recurso por furto de três escravos pertencentes a Dona Maria Dias de Jesus}{} 

\donnee{37}{Crime}{Mandar amarrar um preto livre}{Ville}{NI}{1857}{Ministério Público}{NI}{André Velasco Galiano; Guilhermino Jozé Jeremias}{H}{1}{3134}{Autos de busca e corpo de delito contra André Vellasco Galiano pelo crime de mandar amarrar um preto sertanejo, livre, de nome Cacumba}{} 

相关内容