我有一张 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}{}