Различия между средами рисунков и таблиц очень незначительны - немногим больше, чем у них, использующих разные счетчики и поддерживаемых в отдельных последовательностях.
То есть, ничто не помешает вам поставить ваши {tabular}
окруженияв {figure}
, или ваша графика в {table}
, что будет означать, что они окажутся в одной и той же последовательности.Проблема с этим делом (как отмечает Джозеф Райт) заключается в том, что вам нужно настроить \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
(измените название ad lib).Если вы хотите использовать эту же последовательность в других средах (скажем, в списках?), То определите \the<foo>
таким же образом.
Моя более ранняя попытка этого на самом деле полностью провалилась, как заметил ОП:«неправильно понимать» - вместо того, чтобы быть тривиальным и просто исправить, абсолютно фундаментальным (хо, гул).
(Для любителей, это происходит потому, что команды \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}
среды как обычно.Заголовки будут иметь правильный текст «Таблица / рисунок», но они будут иметь единую последовательность нумерации.
Обратите внимание, что в этом примере числа неправильно указаны в listoffigures / listoftables, но (а) вы говорите, чтоменя это не волнует, (б) это поправимо, хотя, вероятно, слегка неудобно, и (в) жизнь трудна!