对列表和图形使用相同的引用计数

对列表和图形使用相同的引用计数

我在背面有以下代码:

\begin{lstlisting}[caption={Código inicial para o sistema de arquivos},label={lst:Figura1}]
abstract sig FSObject { }

sig File, Dir extends FSObject { }

sig FileSystem {
  root: Dir,
  live: set FSObject,
  contents: Dir lone-> FSObject,
  parent: FSObject ->lone Dir
}{
  no root.parent
  live in root.*contents
  parent = ~contents
}

pred example { }

run example for exactly 1 FileSystem, 4 FSObject
\end{lstlisting}

Ao executar o código da Figura \ref{lst:Figura1} no interpretador Alloy, diversas instâncias são encontradas. A Figura \ref{fig:Figura2} apresenta uma instância selecionada para análise.

\begin{figure}[ht]
\centering
\includegraphics[width=.5\textwidth]{MyFigure2.jpg}
\caption{Contra-exemplo na modelagem}
\label{fig:Figura2}
\end{figure}

最终开始对图像和列表 (代码) 进行计数,如下图所示,我用蓝色突出显示了对我来说错误的内容。我希望有一个计数器,就好像 lstlisting 的值为 1,而图像的值为 2。

在此处输入图片描述

有可能吗?我该如何实现?

答案1

以下是一个快速而粗略的方法。我只是将计数器重新定义为与用于数字的寄存器相同的寄存器。也许更好的方法是修补以\@begindocumenthook删除\newcounter{lstlisting}并添加\newcounter除寄存器分配之外的所有操作。

\documentclass[]{article}

\usepackage{listings}
\usepackage[]{graphicx}

%% include this in your preamble after you load listings
\makeatletter
\AtBeginDocument{\let\c@lstlisting\c@figure}
\makeatother
%%

\begin{document}
\begin{lstlisting}[caption=foo,label=lst:bar,float]
this listing
\end{lstlisting}
Listing \ref{lst:bar} and figure \ref{fig:bar}

\begin{figure}% >>>
  \centering
  \includegraphics{example-image-duck}%
  \caption
  {%
    A caption%
    \label{fig:bar}%
  }%
\end{figure}% <<<
\end{document}

在此处输入图片描述

相关内容