2010-01-08 3 views
2

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 avec son propre compteur et la légende (solved there , merci à dmckee). Maintenant, je voudrais créer \subgraph commande qui fera exactement la même chose que \subfigure commande.Comment créer votre propre et de fantaisie sous <float> commande

J'ai essayé de créer ma propre commande avec le compteur propreate (Assisted here, merci à Alexey). Mais un problème apparaît avec l'utilisation de la commande \ref. Référence à \subfigure renvoie 2.1 (a) mais la référence à \subgraph renvoie .

Comme j'ai essayé de trouver comment résoudre ceci j'ai lu le manuel subfig, où j'ai trouvé la commande \newsubfloat avec un exemple. La première erreur était dans l'utilisation des commandes subfig en subfigure et je me suis coincé là. Si j'utilise subfigure je peux accéder à \subfigure mais ne peut pas forcer \subgraph travail, quand j'utilise subfig je peux plus accéder à \subfloat mais pas dans figure et \ref retours 1.0a au lieu de 1.1 (a).

définition par subfig package:

\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 ma propre \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 \ref commandes fonctionnent (je pense que ma solution s'effondre parce que \label est avant \caption) et/ou en forçant le paquet subfig à fonctionner comme je le souhaite.

Merci pour toute idée et soyez 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 d'avoir les deux compteur (sous-graphique et graphique) correctement référés est d'utiliser \captionof{graph} avant \subgraph.

Donc, ma nouvelle question est: Comment exécuter \captionof{graph} avant les sous-graphes et composer en dessous d'eux? Et comment forcer \ref à montrer 1,1-a au lieu de 1.1.1

Atachements:

Code pour subfigure: (retour <chapter><figure> (<subfigure>) correct

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

Code pour subfig..: (Renvoie <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} 

Répondre

2

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 using \label incorrectly. Vous devez avoir la commande \labelaprès le \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} 

Ce produit:

Graph 1.1 is the first graph, and 1.2 is the second. 
+0

Oui Je suis d'accord avec la position de la commande '\ label' AFTER' \ caption'. Je n'ai aucun problème avec les flottants standard, le point est dans '\ subfloat' et s'y réfère. J'ai l'habitude d'utiliser \ subfigure [sous-légende] {\ includegraphics {} \ étiquette {fig: 1}} \ légende {légende principale} \ label {fig} – Crowley

+0

Hmm. Je ne suis pas sûr de comprendre. Si vous avez un petit exemple de document qui montre votre problème, veuillez le poster ici. –

+0

J'ai mis à jour la question avec mes progrès et une partie du code. Mon test '.tex' fichier est très difficile à lire – Crowley

0

Je ne peux pas donner des détails en ce moment, mais vous voulez utiliser \ refstepcounter au lieu de \ addtocounter.

+0

Peut-être que je ne l'ai pas écrit clairement. Est-il possible de dire à '\ label'" Forget chapitre/section et stocker le GraphOne "? – Crowley

Questions connexes