【发布时间】:2010-06-26 20:23:49
【问题描述】:
我有一个 LaTeX 文档,我希望浮点数(表格和图形)的编号是从 1 到 x 的一个数字序列,而不是根据其类型的两个序列。我也没有使用图表列表,也不需要。
我的文档类是报告,通常我的花车有这样的标题:
\caption{Breakdown of visualisations created.}
\label{tab:Visualisation_By_Types}
【问题讨论】:
我有一个 LaTeX 文档,我希望浮点数(表格和图形)的编号是从 1 到 x 的一个数字序列,而不是根据其类型的两个序列。我也没有使用图表列表,也不需要。
我的文档类是报告,通常我的花车有这样的标题:
\caption{Breakdown of visualisations created.}
\label{tab:Visualisation_By_Types}
【问题讨论】:
一个快速的方法是在每个数字之后加上\addtocounter{table}{1},在每个表格之后加上\addtocounter{figure}{1}。
它并不漂亮,在较长的文档中,您可能希望将其包含在样式表或模板中,或者使用 cristobalito 的链接计数器的解决方案。
【讨论】:
图形和表格环境之间的差异非常小——只不过它们使用不同的计数器,并以不同的顺序进行维护。
也就是说,没有什么可以阻止您将 {tabular} 环境放入 {figure},或将图形放入 {table},这意味着它们最终会以相同的顺序结束。这种情况的问题(正如 Joseph Wright 指出的那样)是您必须调整 \caption,因此无法完美运行。
在序言中尝试以下操作:
\makeatletter
\newcounter{unisequence}
\def\ucaption{%
\ifx\@captype\@undefined
\@latex@error{\noexpand\ucaption outside float}\@ehd
\expandafter\@gobble
\else
\refstepcounter{unisequence}% <-- the only change from default \caption
\expandafter\@firstofone
\fi
{\@dblarg{\@caption\@captype}}%
}
\def\thetable{\@arabic\c@unisequence}
\def\thefigure{\@arabic\c@unisequence}
\makeatother
然后在表格和图中使用\ucaption,而不是\caption(随意更改名称)。如果您想在其他环境中使用相同的序列(例如,列表?),请以相同的方式定义 \the<foo>。
正如 OP 所发现的那样,我之前在这方面的尝试实际上已经完全被打破了:错误是绝对根本的,而不是微不足道的,而且只能很费力地修复。
(对于爱好者来说,这是因为\advance命令是在TeX的肠道中处理的,但是.lof、.lot、和.aux文件的内容是固定在TeX的嘴里的,在扩展时,因此写入文件的内容是 \@tempcnta 在调用 \caption 时所具有的任何随机值,忽略 \advance 计算,然后尽职尽责地将其写入文件,然后被忽略。Doh:我知道这一点有多久了,但从未内化它!?)
尽职尽责地保留先前的尝试(理由可能是指导性错误):
没问题:尝试在序言中加入以下内容:
\makeatletter
\def\tableandfigurenum{\@tempcnta=0
\advance\@tempcnta\c@figure
\advance\@tempcnta\c@table
\@arabic\@tempcnta}
\let\thetable\tableandfigurenum
\let\thefigure\tableandfigurenum
\makeatother
...然后照常使用{table} 和{figure} 环境。标题将具有正确的“表格/图形”文本,但它们将共享一个编号序列。
请注意,这个示例在数字列表/列表中的数字是错误的,但是 (a) 你说你不关心这个,(b) 它是可以修复的,尽管可能有点繁琐,并且 (c) 生活很艰难!
【讨论】:
\let\c@table\@undefined,然后使用\newaliascnt{table}{figure}。对您希望与数字按顺序排列的每个计数器重复此操作,例如\let\c@thm\@undefined,\newaliascnt{thm}{figure}。 (当然,您需要在\lets 周围使用\makeatletter、\makeatother。)对我有用。谁能想到任何问题?
我不记得语法了,但您实际上是在寻找计数器。在自定义浮动部分下查看here。将表格和图形的计数器分配给同一事物,它应该可以工作。
【讨论】:
我只使用一种类型的浮点数(比如说'figure'),然后使用 caption 包从标题中删除自动添加的“Figure”文本并手动处理。
【讨论】: