2

我正在使用包subfigurefloat创建我想要创建的图形和表格,并且我正在尝试graph使用自己的计数器和标题创建自己的环境(在那里解决,感谢 dmckee)。现在我想创建\subgraph与命令完全相同的\subfigure命令。

我尝试使用适当的计数器创建自己的命令(此处提供协助,感谢 Alexey)。但是使用\ref命令出现问题。引用\subfigure返回2.1(a)但引用\subgraph返回1

当我试图找出如何解决这个问题时,我阅读了subfig手册,在那里我找到\newsubfloat了带有示例的命令。第一个错误是在使用subfig's 命令时subfigure,我被困在那里。如果我使用subfigure我可以访问\subfigure但不能强制\subgraph工作,当我使用时subfig我可以访问但不能访问并返回1.0a\subfloat而不是1.1 (a)graphfigure\ref

subfig包定义:

\newfloat{graph2}{tbph}{lom}[chapter]
\restylefloat*{graph2}
\floatstyle{plain}
\floatname{grap2}{Graph2}
\captionsetup[graph2]{position=top}
\newcommand{\listofGraphs}{\listof{Graph2}{List of Graphs}}
\newsubfloat[position=bottom,listofformat=subsimple]{graph2}

定义我自己的\subgraph

\newfloat{graph1}{H}{lop}[chapter]
\floatname{graph1}{Graph1}
\newcounter{GraphOne}[graph1]
\def\theGraphOne{\alph{GraphOne}}
\newcommand{\subgraph}[2][]{
\captionof{subGraph}{#1} #2
}

\newfloat{subGraph}{H}{lop}[graph1]
\floatname{subGraph}{}

请帮助我了解命令\label\ref工作方式(我认为我的解决方案崩溃是因为\labelbefore \caption)和/或强制subfig包按我的意愿工作。

谢谢你的任何想法,请善待我的英语。

克劳利

改进:

通过使用caption包,我可以创建新的计数器(subGraph)并在其环境之外使用它。如何正确引用计数器(子图和图)的唯一方法是使用\captionof{graph}before \subgraph

所以,我的新问题是:如何\captionof{graph}在子图之前执行并在它们下面排版?以及如何强制\ref显示 1.1-a 而不是 1.1.1

附件:

代码subfigure:(返回<chapter>. <figure>( <subfigure>) 正确。

\begin{figure}
\subfigure[sub-caption]{\includegraphics{fig1}\label{fig:1}}
\caption{main caption}
\end{figure}
\ref{fig:1}

代码subfig:(返回<chapter>. <graph2>-1<subfigure>)不正确。

\begin{graph2}
\subfloat[sub-caption]{\includegraphics{fig1}\label{fig:2}}
\caption{main caption}
\end{graph2}
\ref{fig:2}

我的代码:(返回<chapter>......但标题显示相同的“地址”)<graph1><subgraph>

\begin{graph1}
\captionof{graph1}{main caption}
\subgraph[sub-caption]{\includegraphics{fig1}\label{fig:3}}
\end{graph1}
\ref{fig:3}
4

2 回答 2

2

我认为您的subfig解决方案应该有效(subfigure无论如何都已弃用)。引用错误的问题可能与您使用\label不正确有关。您必须在之后作为其一部分的\label命令:\caption

\begin{figure}
\caption{A Figure}
\label{fig}
\end{figure}

或者

\begin{figure}
\caption{A Figure%
\label{fig}}
\end{figure}

编辑:以下“对我有用”。正如我所说,在\label之后\caption

\documentclass{report}
\usepackage{float}
\usepackage{subfig}
\newfloat{graph2}{tbph}{lom}[chapter]
\restylefloat*{graph2}
\floatstyle{plain}
\floatname{grap2}{Graph2}
\captionsetup[graph2]{position=top}
\newcommand{\listofGraphs}{\listof{Graph2}{List of Graphs}}
\newsubfloat[position=bottom,listofformat=subsimple]{graph2}
\begin{document}
\chapter{Test}
\section{Test s}

\begin{graph2}
\subfloat[sub-caption]{\fbox{Fig 1}}
\caption{main caption}
\label{fig:1}
\end{graph2}

\begin{graph2}
\subfloat[sub-caption]{\fbox{Fig 2}}
\caption{main caption}
\label{fig:2}
\end{graph2}

Graph~\ref{fig:1} is the first graph, and~\ref{fig:2} is the second.

\end{document}

这会产生:

Graph 1.1 is the first graph, and 1.2 is the second.
于 2010-01-08T08:26:14.483 回答
0

我现在无法详细说明,但您想使用 \refstepcounter 而不是 \addtocounter。

于 2010-01-08T09:17:25.457 回答