【问题标题】:How to number floats in LaTeX consistently?如何一致地对 LaTeX 中的浮点数进行编号?
【发布时间】:2010-06-26 20:23:49
【问题描述】:

我有一个 LaTeX 文档,我希望浮点数(表格和图形)的编号是从 1 到 x 的一个数字序列,而不是根据其类型的两个序列。我也没有使用图表列表,也不需要。

我的文档类是报告,通常我的花车有这样的标题:

\caption{Breakdown of visualisations created.}
\label{tab:Visualisation_By_Types}

【问题讨论】:

    标签: layout latex figure


    【解决方案1】:

    一个快速的方法是在每个数字之后加上\addtocounter{table}{1},在每个表格之后加上\addtocounter{figure}{1}

    它并不漂亮,在较长的文档中,您可能希望将其包含在样式表或模板中,或者使用 cristobalito 的链接计数器的解决方案。

    【讨论】:

      【解决方案2】:

      图形和表格环境之间的差异非常小——只不过它们使用不同的计数器,并以不同的顺序进行维护。

      也就是说,没有什么可以阻止您将 {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&lt;foo&gt;

      正如 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) 生活很艰难!

      【讨论】:

      • 谢谢。这在一定程度上确实有效。我的文章有大量表格和数字,我发现编号从 14 跳到 16,并且文章正文中对表格和数字的引用不同步,例如图 49 显示...但是图 49 实际上是图 11?我假设没有对正文引用或表格和图形的标题或标签文本进行任何更改。
      • 我想我可能找到了更好的方法。我遇到的问题是(1)它不适用于cleveref(它查看计数器类型以区分)和(2)它连续编号而不是在一章内。相反,我使用 aliascnt 包,然后我使用\let\c@table\@undefined,然后使用\newaliascnt{table}{figure}。对您希望与数字按顺序排列的每个计数器重复此操作,例如\let\c@thm\@undefined\newaliascnt{thm}{figure}。 (当然,您需要在\lets 周围使用\makeatletter\makeatother。)对我有用。谁能想到任何问题?
      【解决方案3】:

      我不记得语法了,但您实际上是在寻找计数器。在自定义浮动部分下查看here。将表格和图形的计数器分配给同一事物,它应该可以工作。

      【讨论】:

        【解决方案4】:

        我只使用一种类型的浮点数(比如说'figure'),然后使用 caption 包从标题中删除自动添加的“Figure”文本并手动处理。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-12-28
          • 1970-01-01
          • 1970-01-01
          • 2015-03-30
          • 1970-01-01
          • 1970-01-01
          • 2013-05-02
          • 1970-01-01
          相关资源
          最近更新 更多