我正在使用包subfigure
和float
来创建我想要创建的图形和表格,并且我正在尝试使用自己的计数器和标题创建自己的环境graph
(solved there,感谢dmckee)。现在我想创建\subgraph
命令,它将与\subfigure
命令完全相同。
我尝试使用propreate counter(Assisted here创建我自己的命令,感谢Alexey)。但是使用\ref
命令会出现问题。引用\subfigure
会返回 2.1(a),但对\subgraph
的引用会返回 1 。
当我试图找出如何解决这个问题时,我阅读了subfig
手册,其中我找到了\newsubfloat
命令的示例。第一个错误是在subfig
中使用了subfigure
的命令,我被困在那里。如果我使用subfigure
我可以访问\subfigure
但无法强制\subgraph
工作,当我使用subfig
时,我可以访问\subfloat
中的graph
但不在figure
和\ref
中返回 1.0a 而不是 1.1(a)。
按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
命令的工作原理(我认为我的解决方案崩溃,因为\label
在\caption
之前)和/或强制{{1包以按我的意愿工作。
感谢您的任何想法并对我的英语表示怜悯。
克罗利
改进:
通过使用subfig
包,我可以创建新的计数器(caption
)并在其环境之外使用它。唯一的方法是如何正确引用计数器(子图和图形)在subGraph
之前使用\captionof{graph}
。
所以,我的新问题是:如何在子图之前执行\subgraph
并在它们下面排版?以及如何强制\captionof{graph}
显示1.1-a而不是1.1.1
Atachements:
\ref
的代码:(返回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>
答案 0 :(得分:2)
我认为您的subfig
解决方案应该有效(无论如何subfigure
已被弃用)。错误引用的问题可能与您using \label
incorrectly有关。您必须在 \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.
答案 1 :(得分:0)
我现在不能详细说明,但你想使用\ refstepcounter而不是\ addtocounter。