据我所知,计数器应该自动递增。但是,当我尝试使用计数器时,得到的都是零。这是 MWE。
\documentclass[12pt]{article}
\usepackage{lipsum}
\newcounter{mcounter}
\begin{document}
\themcounter \lipsum[1]
\themcounter \lipsum[2]
\themcounter \lipsum[3]
\end{document}
说实话,我正试图在教学计划列表中间创建一个页数计数器。列表看起来像“第 1 天:工作表 #1、#2 和注释。第 2 天:工作表 #3、注释和工作表 #4”。如果我添加工作表(或删除工作表),我不想为当天和任何后续日期的列表中的所有内容重新编号。
有什么建议可以告诉我我做错了什么吗?我在 Win 10 PC 上的 Texmaker 上使用 LauLaTeX。
答案1
你写了,
据我了解,计数器应该自动递增。
这不对。如果您创建了一个计数器,但除了显示其值(例如,通过\themcounter
)之外从未对其执行任何操作,则计数器的值将0
在整个文档中保持其初始值(通常是)。
在 LaTeX 中,可以使用命令\setcounter
、\addtocounter
、\stepcounter
和来修改计数器的值\refstepcounter
。\setcounter
和\addtocounter
接受两个参数:计数器的名称和一个整数。\stepcounter
和\refstepcounter
将计数器的值增加1
,并且它们只接受一个参数——要增加其值的计数器的名称。
如果您想要创建一个 LaTeX 宏,它 (a) 增加名为 的计数器mycounter
,1
并且 (b) 显示新增加的 值mycounter
,您可以通过多种方式实现。例如,在使用 创建计数器后
\newcounter{mycounter}
您可以使用以下三个定义之一\showmycounter
:
\newcommand\showmycounter{\addtocounter{mycounter}{1}\themycounter}
\newcommand\showmycounter{\stepcounter{mycounter}\themycounter}
\newcommand\showmycounter{\refstepcounter{mycounter}\themycounter}
默认情况下,指令\themycounter
和\arabic{mycounter}
产生相同的输出,即默认使用阿拉伯数字来显示计数器的值。如果您想将计数器的值显示为大写罗马数字,则必须重新定义\themycounter
(通过\renewcommand\themycounter{\Roman{mycounter}}
)或更改上述\newcommand
指令,例如,
\newcommand\showmycounter{\stepcounter{mycounter}\Roman{mycounter}}
这价值计数器的 可以是任意整数,包括0
正整数和负整数。毫不奇怪,如果 的值mycounter
是非正数,则尝试将其值表示为字母字符或罗马数字将生成错误消息。
基于以下想法构建的 MWE (最小工作示例):
\documentclass{article}
\newcounter{mycounter} % create a new counter, called 'mycounter'
% default def'n of '\themycounter' is '\arabic{mycounter}'
%% command to increment 'mycounter' by 1 and to display its value:
\newcommand\showmycounter{\stepcounter{mycounter}\themycounter}
\usepackage{lipsum}
\newcommand\showlips{\stepcounter{mycounter}\lipsum[\value{mycounter}]}
\begin{document}
\showmycounter, \showmycounter, \showmycounter
\showlips
% verifying that the preceding command used '4':
\lipsum[4]
\end{document}