LaTeX 问题:\addtocounter 无法与 babel 选项配合使用

LaTeX 问题:\addtocounter 无法与 babel 选项配合使用

我是这个论坛的新手,所以我希望以正确的方式写下我的问题。

我有一份分为两部分的文档(这是我多次需要的模型),每部分都以页码 1 开始。然后我必须写入整个文档的总页数。为此,我想使用命令\addtocounter。以下代码有效:

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\begin{document}
\newcounter{TotPages}
\addtocounter{TotPages}{\pageref{02}}
\addtocounter{TotPages}{\pageref{03}}
\pageref{02}+\pageref{03}=
\arabic{TotPages}
\section{title 01}
\newpage
\section{title 02}
\label{02}
\newpage
\section{title 03}
\label{03}
\end{document}

但是使用[french][francais]选项[british]进行babel打包时,它会写入错误消息

缺失数字,视为零。\addtocounter{TotPages} \pageref{02}}

例如,下面的代码不起作用:

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel} %only change
\begin{document}
\newcounter{TotPages}
\addtocounter{TotPages}{\pageref{02}}
\addtocounter{TotPages}{\pageref{03}}
\pageref{02}+\pageref{03}=
\arabic{TotPages}
\section{title 01}
\newpage
\section{title 02}
\label{02}
\newpage
\section{title 03}
\label{03}
\end{document}

我知道我可以使用包 calc,但如果可能的话我并不想这样做,因为在整个文档中我只需要这个命令。

有人知道如何解决这个问题吗?非常感谢!

答案1

简短回答为什么\addtocounter失败\pageref

\pageref不可扩展,无法被“馈送” \addtocounter——该宏需要一个数字值。

除了这个问题之外,向页面添加参考值并没有给出预期的结果,因为\pageref出现在第 5 页而另一个出现在第 17 页并不意味着该文档只有 22 页;即使是这种情况,也不要依赖于 ref 值的输出,它也可以是罗马数字或字母。

可能的解决方案:

  • 使用该lastpage包可以获取最后的页面引用,但如果在此期间重置页码,则此方法不起作用 → 会报告错误值。
  • 利用该xassoccnt包可以输出其\DeclareTotalAssociatedCounters{page}{totalpages}页数\TotalValue{totalpages}——这不受页数计数器重置的影响。
  • 使用\usepackage[perpage,user,lastpage]{zref}它可以得到总页数\zref[abspage]{LastPage}。(请不要将 LastPage 标签zref与包LastPage中的标签混淆lastpage——它们属于不同的命名空间

\getpagerefnumber这里有一个“微小”的文档,显示了问题,例如,可以使用从中提取可扩展的pageref——refcount它只是为了显示计数\pageref在逻辑上是错误的而添加的。

该文件有6页,仅\TotalValue\zref[abspage]{LastPage}报告正确的值。

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{refcount}
\usepackage{lastpage}
\usepackage{blindtext}
\usepackage[francais]{babel} %only change


\usepackage[perpage,user,lastpage]{zref}
\usepackage{xassoccnt}

\DeclareTotalAssociatedCounters{page}{totalpages}

\makeatletter
\pretocmd{\part}{\pagenumbering{arabic}\clearpage}{}{}
\makeatother
\newcounter{TotPages}

\begin{document}

\addtocounter{TotPages}{\getpagerefnumber{02}}
\addtocounter{TotPages}{\getpagerefnumber{03}}


The number of pages in this beautiful document: \TotalValue{totalpages} pages! 

whereas \verb!\pageref{Lastpage}! reports \pageref{LastPage} pages!. 

With \texttt{zref} you get \zref[abspage]{LastPage} pages!


Values reported with sum up of references: \pageref{02}+\pageref{03}= \arabic{TotPages} pages!

\part{First} 

\section{title 01}
\clearpage
\section{title 02}
\label{02}
\clearpage

\blindtext

\part{Second} 
\section{title 03} \label{03}
\blindtext[5]

\end{document}

在此处输入图片描述

相关内容