Cómo crear un comando \sub<float> propio y elegante
Pregunta
estoy usando paquetes subfigure
y float
para crear figuras y tablas que quiero crear y estoy tratando de crear mi propio entorno graph
con su propio contador y título (resuelto allí, gracias a dmckee).Ahora me gustaría crear \subgraph
comando que hará exactamente lo mismo que \subfigure
dominio.
Intenté crear mi propio comando con un contador propio (Asistido aquí, gracias a Alexey).Pero el problema aparece con el uso. \ref
dominio.Referencia a \subfigure
devoluciones 2.1(a) pero referencia a \subgraph
devoluciones 1.
Mientras intentaba descubrir cómo resolver esto, leí subfig
manual, donde he encontrado \newsubfloat
comando con un ejemplo.El primer error fue en el uso de subfig
los comandos en subfigure
y me quedé atrapado allí.si uso subfigure
puedo acceder \subfigure
pero no puedo forzar \subgraph
trabajando, cuando uso subfig
puedo acceder \subfloat
en graph
pero no en figure
y \ref
devoluciones 1.0a en lugar de 1.1 (a).
definición por subfig
paquete:
\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}
definición mía \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}{}
Por favor ayúdame a entender cómo \label
y \ref
Los comandos funcionan (creo que mi solución colapsa porque \label
es antes \caption
) y/o con fuerza subfig
paquete para que funcione como quiero.
Gracias por cualquier idea y ten piedad de mi inglés.
crowley
Mejora:
Mediante el uso caption
paquete puedo crear un nuevo contador (subGraph
) y utilizarlo fuera de su entorno.La única forma de hacer que ambos contadores (subgrafo y gráfico) estén correctamente referidos es usando \captionof{graph}
antes \subgraph
.
Entonces, mi nueva pregunta es:como ejecutar \captionof{graph}
¿Antes de los subgrafos y tipografiados debajo de ellos?Y como forzar \ref
para mostrar 1.1-a en lugar de 1.1.1
Adjuntos:
Código para subfigure
:(Devoluciones <chapter>
.<figure>
(<subfigure>
) correcto.
\begin{figure}
\subfigure[sub-caption]{\includegraphics{fig1}\label{fig:1}}
\caption{main caption}
\end{figure}
\ref{fig:1}
Código para subfig
:(Devoluciones <chapter>
.<graph2>-1<subfigure>
) incorrecto.
\begin{graph2}
\subfloat[sub-caption]{\includegraphics{fig1}\label{fig:2}}
\caption{main caption}
\end{graph2}
\ref{fig:2}
Mi código:(Devoluciones <chapter>
.<graph1>
.<subgraph>
pero el título muestra la misma "dirección")
\begin{graph1}
\captionof{graph1}{main caption}
\subgraph[sub-caption]{\includegraphics{fig1}\label{fig:3}}
\end{graph1}
\ref{fig:3}
Solución
Creo que la solución debe trabajar subfig
(subfigure
está obsoleto de todos modos). El problema con las referencias equivocadas podría tener que ver con que usando \label
incorrectamente . Debe tener el comando \label
después el \caption
, o como una parte de ella:
\begin{figure}
\caption{A Figure}
\label{fig}
\end{figure}
o
\begin{figure}
\caption{A Figure%
\label{fig}}
\end{figure}
Editar : la siguiente "funciona para mí". Como ya he dicho, la \label
es después de la \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}
Esto produce:
Graph 1.1 is the first graph, and 1.2 is the second.
Otros consejos
No puedo elaborar en este momento, pero que desea utilizar \ refstepcounter en lugar de \ addtocounter.