有些人知道,我插入命令 \maketitle 的标签,它包含字段 ()@author、@date、\thanks 和 \title)。一切正常,但对于 @thanks,它显示该变量为空,但变量不为空。我尝试使用 tl_if_empty ctf|ntf|Ntf,但它修复了这个问题,但显示不为空的 @author 和 @thanks,即使我的文档中没有它。请帮帮我,我该如何正确检查这个变量是否为空。例如,如果我没有 author,变量 @author 应该是空的。感谢大家的帮助。
\documentclass{article}
\usepackage{tagpdf}
\tagpdfsetup{tabsorder=structure,uncompress,activate-all,add-new-tag=Title/P,interwordspace=true,tagunmarked=false,log/all}
\pagestyle{empty}
\ExplSyntaxOn
\prop_set_from_keyval:Nn \l__kozlovskiy_data_of_title_prop
{
@author = H1 ,
@date = H1 ,
@thanks = H1 ,
@title = H1 ,
}
\makeatletter
\DeclareRobustCommand\thanks[1]{\footnotemark
\protected@xdef\orig@@thanks{\orig@@thanks
\protect\footnotetext[\the\c@footnote]{#1}}}
\makeatother
\cs_new_protected:Npn \kozlovskiy_maketitle:
{
\tagstructbegin{tag=Title}
\prop_map_inline:Nn \l__kozlovskiy_data_of_title_prop{
\cs_set_eq:cc { orig@##1 } { ##1 }
\tl_if_empty:cTF{##1}
{
\use:c { orig@##1 }
}
{
\cs_gset_protected:cpn { ##1 } {
\tagstructbegin{tag=##2}
\tagmcbegin{tag=##2}
\use:c { orig@##1 }
\tagmcend
\tagstructend
}
}
}
\__kozlovskiy_original_maketitle:
\tagstructend
}
\cs_new_eq:NN \__kozlovskiy_original_maketitle: \maketitle
\cs_gset_protected:Npn \maketitle { \kozlovskiy_maketitle: }
\ExplSyntaxOff
%
\author{alexandr Kozlovskiy}
\date{\today}
\title{test document%
\thanks{Alexandr Kozlovskiy}
}
\begin{document}
\tagstructbegin{tag=Document}
\maketitle
\tagstructbegin{tag=P}
\tagmcbegin{tag=P}
Test
\tagmcend
\tagstructend
\tagstructend
\end{document}
答案1
\thanks
不会像\author
、\date
和\title
那样存储其内容。相反,它会出现在这些命令的参数中,然后在输出标题时生成脚注。默认行为是使用\@thanks
一系列\footnotemark
命令填充宏,但这不会发生直到标题是排版的,因此在命令中看不到任何内容,直到\author
等设置的值被展开。目前还不完全清楚你想要完成什么,但我怀疑你的部分困难在于不想深入研究代码,其中\maketitle
不仅包括\@thanks
填充的位置,还包括\@thanks
清除的位置。