
Decidí crear una nueva pregunta para esto, porque esta pregunta se conecta con la pregunta anterior. Decidí usar propiedades para etiquetar varios entornos. Pero para \maketitle, en el que uso \tabular, aparece un error:
! Error de LaTeX: carácter ilegal en la matriz arg.
Por favor ayúdenme a resolver este problema (ahora no es importante qué pdf tenemos, porque en nuestro paquete tenemos más código para esto: simplemente disminuyo el código para mostrar mi problema). Gracias a todos por su ayuda.
\documentclass{article}
\usepackage{tagpdf}
\tagpdfsetup{tabsorder=structure,uncompress,activate-all,add-new-tag=Title/P,interwordspace=true}
\ExplSyntaxOn
\makeatletter
\prop_gset_from_keyval:Nn{\g__tables_prop}{table=0,endtable=1,table*=0,endtable*=1,tabular=0,endtabular=1,tabular*=0,endtabular*=1,tabbing=0,endtabbing=1,tabbing*=0,endtabbing*=1}
\prop_map_inline:Nn \g__tables_prop{
\cs_set_eq:cc{orig@#1}{#1}
\cs_gset_protected:cpn{#1}##1{
\int_case:nnF{#2}
{
{0} %somethin with \begin,e.g \begin{tabular}
{
\cs_new_protected:Npn \l__tab_char: {
\tagmcend
\tagstructend
\tagstructend
\tagstructbegin{tag=TD}
\tagstructbegin{tag=P}
\tagmcbegin{tag=P}
\c_alignment_token
}
\char_set_active_eq:NN \& \l__tab_char:
\char_set_catcode_active:N \&
\tagstructbegin{tag=Table}
\tagstructbegin{tag=TBody}
\use:c{orig@#1}{##1}
\message{argument~##1}
}
{1} %somethin with \end,e.g \end{tabular}
{
\use:c{orig@#1}{##1}
\tagstructend
\tagstructend
}
}
{}
}
}
\makeatother
\ExplSyntaxOff
\author{Alexandr Kozlovskiy}
\title{test}
\begin{document}
\tagstructbegin{tag=Document}
\maketitle{} %error
\makeatletter
%this code works ok.
\begin{tabular}{ccc}
1&2&3
\end{tabular}
\tagstructend
\end{document}
Respuesta1
Creo que lo que estás buscando probablemente sea \pretocmd
del etoolbox
paquete. Además, su codificación y sangría LaTeX son un poco descuidadas. Si puede resultarle útil, he escrito untutorialen LaTeX3.
\documentclass{article}
\usepackage{tagpdf}
\usepackage{etoolbox}
\tagpdfsetup{tabsorder=structure,
uncompress,
activate-all,
add-new-tag=Title/P,
interwordspace=true
}
\makeatletter
\ExplSyntaxOn
\clist_new:N \g_tab_env_clist
\clist_gset:Nn \g_tab_env_clist {
table,
table*,
tabular,
tabular*,
%tabbing,
%tabbing*
}
\cs_set_eq:NN \pre_to_cmd:Nnnn \pretocmd
\cs_generate_variant:Nn \pre_to_cmd:Nnnn {cnnn}
\clist_map_inline:Nn \g_tab_env_clist {
\pre_to_cmd:cnnn {#1} {
\char_set_active_eq:NN \& \g__tab_char:
\char_set_catcode_active:N \&
\tagstructbegin{tag=Table}
\tagstructbegin{tag=TBody}
}{}{
\GenericError {}{unable~to~patch~command~"#1"}{}{}
}
\pre_to_cmd:cnnn {end#1} {
\tagstructend
\tagstructend
}{}{
\GenericError {}{unable~to~patch~command~"end#1"}{}{}
}
}
\cs_set_protected:Npn \g__tab_char: {
\tagmcend
\tagstructend
\tagstructend
\tagstructbegin{tag=TD}
\tagstructbegin{tag=P}
\tagmcbegin{tag=P}
\c_alignment_token
}
\ExplSyntaxOff
\makeatother
\author{Alexandr Kozlovskiy}
\title{test}
\begin{document}
\tagstructbegin{tag=Document}
\maketitle{}
\begin{tabular}{ccc}
1&2&3
\end{tabular}
\tagstructend
\end{document}