Comment créer votre propre et de fantaisie \ sous commande
Question
J'utilise des paquets subfigure
et float
pour créer des figures et des tableaux que je veux créer et je suis en train de créer mon propre environnement graph
avec son propre compteur et la légende ( résolu il, grâce à dmckee). Maintenant, je voudrais créer commande \subgraph
qui fera exactement la même chose que la commande \subfigure
.
J'ai essayé de créer ma propre commande avec compteur de propreate ( assisté , grâce à Alexey). Mais le problème apparaît avec l'aide de la commande \ref
. Référence à \subfigure
retourne 2.1 (a) mais référence à \subgraph
retourne 1 .
Comme je l'ai essayé de savoir comment résoudre ce que je lis manuel subfig
, où j'ai trouvé commande \newsubfloat
avec un exemple. Première erreur était en cours d'utilisation des commandes de subfig
dans subfigure
et je me suis coincé là-bas. Si j'utilise subfigure
je peux accéder à \subfigure
mais ne peut pas forcer le travail du \subgraph
, quand je l'utilise subfig
je peux plus accéder \subfloat
à graph
mais pas dans les déclarations figure
et \ref
1.0a au lieu de 1.1 (a ) .
définition par paquet 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}
définition mon \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}{}
S'il vous plaît me aider à comprendre comment \label
et les commandes \ref
fonctionnent (je pense que ma solution s'effondre parce que \label
est avant \caption
) et / ou forcer paquet subfig
à travailler comme je veux.
Merci pour toute idée et être miséricordieux envers mon anglais.
Crowley
Amélioration:
En utilisant package caption
je peux créer un nouveau compteur (subGraph
) et de l'utiliser en dehors de son environnement. La seule façon comment avoir les deux contre (et graphique sous-graphe) correcly visé utilise \captionof{graph}
avant \subgraph
.
Alors, ma nouvelle question est: Comment exécuter \captionof{graph}
avant et sous-graphes ci-dessous dans les composěe? Et comment forcer \ref
à montrer au lieu de 1,1 a de 1.1.1
Atachements:
Code pour subfigure
:. (Retour <chapter>
.<figure>
(<subfigure>
) correcte
\begin{figure}
\subfigure[sub-caption]{\includegraphics{fig1}\label{fig:1}}
\caption{main caption}
\end{figure}
\ref{fig:1}
Code pour subfig
:. (Retour <chapter>
.<graph2>-1<subfigure>
) incorrect
\begin{graph2}
\subfloat[sub-caption]{\includegraphics{fig1}\label{fig:2}}
\caption{main caption}
\end{graph2}
\ref{fig:2}
Mon code: (retour <chapter>
.<graph1>
.<subgraph>
mais légende montre la même "adresse")
\begin{graph1}
\captionof{graph1}{main caption}
\subgraph[sub-caption]{\includegraphics{fig1}\label{fig:3}}
\end{graph1}
\ref{fig:3}
La solution
Je pense que votre solution subfig
devrait fonctionner (subfigure
est dépréciée de toute façon). Le problème avec les mauvaises références pourrait avoir à faire avec vous en utilisant correctement \label
. Vous devez avoir la commande \label
après la \caption
, ou une partie de celui-ci:
\begin{figure}
\caption{A Figure}
\label{fig}
\end{figure}
ou
\begin{figure}
\caption{A Figure%
\label{fig}}
\end{figure}
Modifier : ce qui suit "fonctionne pour moi". Comme je l'ai dit, le \label
est après 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}
produit:
Graph 1.1 is the first graph, and 1.2 is the second.
Autres conseils
Je ne peux pas donner des détails en ce moment, mais vous voulez utiliser \ refstepcounter au lieu de \ addtocounter.