如何将 pageref 与 expl3 一起使用?

如何将 pageref 与 expl3 一起使用?

我认为我对全局变量有些不理解。以下 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}}不是变量。

相关内容