Как создать собственную и необычную команду \sub<float>

Я использую пакеты subfigure а также float создавать рисунки и таблицы, которые я хочу создать, и я пытаюсь создать свою собственную среду graph со своим счетчиком и подписью ( решено там, благодаря dmckee). Теперь я хотел бы создать \subgraph команда, которая будет делать точно так же, как \subfigure команда.

Я попытался создать свою собственную команду со счетчиком пропреата (Помогли здесь, спасибо Алексею). Но проблема возникает с использованием \ref команда. Ссылка на \subfigure возвращает 2.1(а), но ссылка на \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) и / или с принуждением subfig пакет на работу, как я хочу.

Спасибо за любую идею и будь милостив к моему английскому.

Crowley

Улучшение:

Используя caption Пакет я могу создать новый счетчик (subGraph) и использовать его вне окружающей среды. Единственный способ, как правильно соотнести счетчик (подграф и график), - \captionof{graph} до \subgraph,

Итак, мой новый вопрос: как выполнить \captionof{graph} перед подграфами и набранными под ними? И как заставить \ref показать 1.1-а вместо 1.1.1

Atachements:

Код для 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> но подпись показывает тот же "адрес")

\begin{graph1}
\captionof{graph1}{main caption}
\subgraph[sub-caption]{\includegraphics{fig1}\label{fig:3}}
\end{graph1}
\ref{fig:3}

2 ответа

Решение

Я думаю твой subfig решение должно работать (subfigure все равно не рекомендуется). Проблема с неправильными ссылками может быть связана с тем, что вы используете \label неправильно. Вы должны иметь \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.

Я не могу сейчас уточнить, но вы хотите использовать \refstepcounter вместо \addtocounter.

Другие вопросы по тегам