我认为我对全局变量有些不理解。以下 MWE 无法在页脚中显示总页码:
\documentclass{article}
\usepackage{expl3}
\usepackage{blindtext} % For this example
\usepackage{fancyhdr,refcount} % For this example
\pagestyle{fancy}
\ExplSyntaxOn
\AtEndDocument{\label{last-page}}
\cs_generate_variant:Nn \int_gset:Nn { NV }
\int_new:N \g_total_page_int
\int_gset:NV \g_total_page_int {\getpagerefnumber{last-page}}
\cfoot{
Total~:~\int_use:N \g_total_page_int
}
\ExplSyntaxOff
\begin{document}
\blindtext[6]
\end{document}
但是这个确实如此:
\documentclass{article}
\usepackage{expl3}
\usepackage{blindtext} % For this example
\usepackage{fancyhdr,refcount} % For this example
\pagestyle{fancy}
\ExplSyntaxOn
\AtEndDocument{\label{last-page}}
\cs_generate_variant:Nn \int_set:Nn { NV }
\int_new:N \l_total_page_int
\cfoot{
\int_set:NV \l_total_page_int {\getpagerefnumber{last-page}}
Total~:~\int_use:N \l_total_page_int
}
\ExplSyntaxOff
\begin{document}
\blindtext[6]
\end{document}
第一种方法似乎是正确的,并且可以避免多次设置 (lg)_total_page_int。但为什么它不起作用呢?
答案1
问题在于直到 才读取包含参考信息的文件\begin{document}
。您需要将设置变量的时间推迟到那时。
\documentclass{article}
\usepackage{expl3}
\usepackage{blindtext} % For this example
\usepackage{fancyhdr,refcount} % For this example
\pagestyle{fancy}
\ExplSyntaxOn
\AtEndDocument{\label{last-page}}
\int_new:N \g_total_page_int
\AtBeginDocument{
\int_gset:Nn \g_total_page_int {\getpagerefnumber{last-page}}
}
\cfoot{
Total~:~\int_use:N \g_total_page_int
}
\ExplSyntaxOff
\begin{document}
\blindtext[6]
\end{document}
请注意,您应该将其:Nn
作为签名,而不是:NV
因为{\macro{something}}
不是变量。