нумеровать рисунки и таблицы вместе с одним именем метки

нумеровать рисунки и таблицы вместе с одним именем метки

Я хотел бы снабдить свои рисунки и таблицы непрерывными обозначениями, используя S.I, S.II, S.IIIи т. д. в подписях как рисунков, так и таблиц.

Я могу изменить подпись figureи tableна S.I, ... с помощью

\renewcommand{\tablename}{S.}
\renewcommand{\figurename}{S.}
\renewcommand{\thetable}{\Roman{table}}
\renewcommand{\thefigure}{\Roman{figure}}

но это все еще учитывает рисунки и таблицы отдельно. S.IТаким образом, существует дважды, один раз для первого рисунка и один раз для первой таблицы.

Как мне этого избежать? Спасибо!

решение1

ОбновлятьКонцепция связанных счетчиков теперь представлена ​​в xassoccntверсии 1.0 (текущая версия по состоянию на 09.08.2016), которая доступна в CTAN/MikTeX и TeXLive 2016.

Хотя в ссылках на этот вопрос есть ответы, я предлагаю другое решение, которое содержит экспериментальный код (следующего релиза) моего xassoccntпакета. Код на данный момент выглядит длинным, но он будет скрыт в пакете, с использованием других макросов, которые, конечно, сократят настройку. В будущем планируется иметь кучу счетчиков, которые будут «общими» или связанными, а не только два, как в этом примере.

Примечание: это не объединяет функции \listoftablesи \listoffiguresв одну List of ...(что было бы странно в любом случае, с моей точки зрения)

Работает с hyperref!

\documentclass{article}

\usepackage{xassoccnt}
\usepackage{blindtext}


\renewcommand{\tablename}{S.}
\renewcommand{\figurename}{S.}
\renewcommand{\thetable}{\Roman{table}}
\renewcommand{\thefigure}{\Roman{figure}}


\ExplSyntaxOn
\seq_new:N \l__xassoccnt_coupledcounters_seq
\NewDocumentCommand{\DeclareCoupledCounters}{mm}{%
  \seq_clear:N \l__xassoccnt_coupledcounters_seq
  \seq_gput_right:Nn \l__xassoccnt_coupledcounters_seq {#1}
  \seq_gput_right:Nn \l__xassoccnt_coupledcounters_seq {#2}
}

\cs_set_eq:NN \xassoccnt_stepcounter \stepcounter
\cs_set_eq:NN \xassoccnt_setcounter \setcounter % Should be done
\cs_set_eq:NN \xassoccnt_addtocounter \addtocounter % Should be done

\RenewDocumentCommand{\stepcounter}{m}{%
  \tl_set:Nx \l_tmpa_tl {#1}
  \seq_if_in:NVTF \l__xassoccnt_coupledcounters_seq  {\l_tmpa_tl} {%
    \seq_map_inline:Nn \l__xassoccnt_coupledcounters_seq {%
      \xassoccnt_stepcounter{##1}
    }
  }{
    \xassoccnt_stepcounter{#1}% Only step #1 
  }
}
\ExplSyntaxOff


\DeclareCoupledCounters{figure}{table}

\usepackage{hyperref}

\begin{document}
\listoffigures
\listoftables

\section{First}

\blindtext[10]

\begin{figure}

\caption{foo figure}
\end{figure}

\blindtext[10]


\begin{table}
\caption{foo table}
\end{table}

\section{Second}

\blindtext[10]

\begin{figure}

\caption{other foo figure}
\end{figure}

\blindtext[10]


\begin{table}
\caption{other foo table}
\end{table}


\end{document}

введите описание изображения здесь

решение2

Если вам не нужен гиперреф:

\renewcommand{\tablename}{S.}
\renewcommand{\figurename}{S.}
\makeatletter
\let\c@table\c@figure
\makeatother
\renewcommand\thefigure{\Roman{figure}}
\let\thetable\thefigure

Связанный контент