latex - присваивать номера контенту автоматически - PullRequest
0 голосов
/ 10 ноября 2019

Я не могу назначить номера содержимому автоматически (например, для таблиц, изображений и т. Д.) В латексе.

Мой текущий подход заключается в том, что я присваиваю номер таблице вручную, как Таблица-1, Таблица-2, .., Таблица-н. Но я ищу решение, которое автоматически присваивает номер моему [содержимому] постепенно (например, серии) всем таблицам, изображениям, формулам и т. Д. Мне нужно что-то похожее на ключевое слово \cite, но сТолько функция автоматического назначения номера.

Предполагаемый пример:

Table \somevariable
....
....
....
Table \somevariable
....
....
....
Table \somevariable
....
....
....
Table \somevariable

Предполагаемый вывод:

Table 1
....
....
....
Table 2
....
....
....
Table 3
....
....
....
Table 4

Примечание: Пожалуйста, не отмечайте этот вопросвниз, если у вас нет разъяснений.

1 Ответ

0 голосов
/ 14 ноября 2019

Я бы начал с того, что сказал, что вы делаете это неправильно. (La) TeX имеет встроенную поддержку автоматической нумерации и перекрестных ссылок. Если вы нумеруете контент вручную, вам следует переосмыслить стратегию.

Если вы вставляете таблицы (как в вашем фрагменте кода), вам следует рассмотреть возможность использования среды table (float). Вместе с пакетом caption вы можете легко обрабатывать нумерацию с / без заголовков:

enter image description here

\documentclass{article}

\usepackage{caption,graphicx}

\captionsetup[table]{labelfont=bf}% For example

\begin{document}

\begin{table}
  \centering
  \caption{A table}% Caption with text
  \begin{tabular}{ l c r }
    Left & Centre & Right \\
    L    &    C   &     R
  \end{tabular}
\end{table}

\begin{table}
  \centering
  \caption{}% Caption without text (just numbering the table)
  \begin{tabular}{ r c l }
    Right & Centre & Left \\
        R &    C   & L
  \end{tabular}
\end{table}

\mbox{}% Just for this example

\end{document}

Примечаниекак пакет caption автоматизирует вставку двоеточия (:, изменяемый с помощью опции labelsep; скажем, labelsep=period) в зависимости от того, указана пустая подпись или нет. Счетчик table также автоматически увеличивается с каждым использованием \caption в среде table.

Если вы действительно хотите автоматизировать этот процесс вручную (например, вы не хотитевещи, которые можно перемещать, или вы не знаете, как правильно использовать окружения, вы можете / должны определить команду в преамбуле, которая последовательно устанавливает нумерацию, что позволяет вам изменить ее в одном месте, если это необходимо, ибудет иметь глобальный (но непротиворечивый) эффект в вашем документе. Вот одна из таких попыток:

enter image description here

\documentclass{article}

\usepackage{lipsum}% Just for this example
\usepackage{graphicx}

\newcommand{\inserttablenumber}{%
  \refstepcounter{table}%
  \begingroup
    \centering
    \bfseries Table~\thetable
    \par
  \endgroup
}

\begin{document}

\lipsum[1]

\inserttablenumber

{\centering
\begin{tabular}{ l c r }
  Left & Centre & Right \\
  L    &    C   &     R
\end{tabular}\par}

\lipsum[2]

\inserttablenumber

{\centering
\begin{tabular}{ r c l }
  Right & Centre & Left \\
      R &    C   & L
\end{tabular}\par}

\lipsum[3]

\end{document}

\inserttablenumber шаги ужеопределен и доступен счетчик table, который делает его \ref доступным через \refstepcounter. Затем он устанавливает Table <table number> в жирным шрифтом и по центру. \par обеспечивает использование \centeringдля этого \par agraph, в то время как область действия ограничена только этим коротким фрагментом текста через группу (\begingroup ... \endgroup).

В обоих случаях вы должны иметь возможность поставить \label{<label>} после подписи и использования Table~\ref{<label>} в другом месте вашего документа, и он найдет соответствующий номер таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...