Как правильно нумеровать числа в LaTeX? - PullRequest
3 голосов
/ 27 июня 2010

У меня есть документ LaTeX, в котором я хотел бы, чтобы нумерация чисел с плавающей точкой (таблиц и рисунков) была в одной числовой последовательности от 1 до x, а не в двух последовательностях в зависимости от их типа. Я не использую списки рисунков или таблиц, да и не надо.

Мой класс документов - это отчет, и обычно мои плавающие надписи имеют такие заголовки:

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

Ответы [ 4 ]

3 голосов
/ 27 июня 2010

Быстрый способ сделать это - поставить \addtocounter{table}{1} после каждой цифры и \addtocounter{figure}{1} после каждой таблицы.

Это не красиво, и в более длинном документе вы, вероятно, захотите включить его в свою таблицу стилей или шаблон или использовать решение для связи счетчиков с помощью cristobalito.

2 голосов
/ 28 июня 2010

Различия между средами рисунков и таблиц очень незначительны - немногим больше, чем у них, использующих разные счетчики и поддерживаемых в отдельных последовательностях.

То есть, ничто не помешает вам поставить ваши {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, но (а) вы говорите, чтоменя это не волнует, (б) это поправимо, хотя, вероятно, слегка неудобно, и (в) жизнь трудна!

1 голос
/ 27 июня 2010

Я не могу вспомнить синтаксис, но вы, по сути, ищете счетчики.Посмотрите здесь , в разделе пользовательских поплавков.Назначьте счетчики для таблиц и рисунков одной и той же вещи, и она должна работать.

0 голосов
/ 27 июня 2010

Я бы просто использовал один тип float (скажем, 'figure'), затем использовал пакет заголовка, чтобы удалить автоматически добавленный текст "Figure" из заголовка и обработать его вручную.

...