如何创建自己的和花哨的\ sub <float>命令</float>

时间:2010-01-08 03:38:46

标签: latex label counter caption subfigure

我正在使用包subfigurefloat来创建我想要创建的图形和表格,并且我正在尝试使用自己的计数器和标题创建自己的环境graphsolved 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>

2 个答案:

答案 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。