Как создать свою причудливую команду \ sub ‹float›

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

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

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

Кроули

Улучшение:

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

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

Приобретения:

Код для subfigure: (Возвращает _37 _._ 38_ (<subfigure>) правильно.

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

Код для subfig: (возвращает _42 _._ 43_) неверный.

\begin{graph2}
\subfloat[sub-caption]{\includegraphics{fig1}\label{fig:2}}
\caption{main caption}
\end{graph2}
\ref{fig:2}

Мой код: (Возвращает _45 _._ 46 _._ 47_, но в заголовке указан тот же "адрес")

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

person Crowley    schedule 08.01.2010    source источник


Ответы (2)


Я думаю, ваше subfig решение должно работать (subfigure в любом случае устарело). Проблема с неправильными ссылками может быть связана с тем, что вы неправильно использовали \label < / а>. У вас должна быть команда \label после \caption или как ее часть:

\begin{figure}
\caption{A Figure}
\label{fig}
\end{figure}

or

\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.
person Alok Singhal    schedule 08.01.2010
comment
Да, я согласен с позицией \label команды ПОСЛЕ \caption. У меня нет проблем со стандартными числами с плавающей запятой, дело в \subfloat и ссылается на него. Я привык использовать \ subfigure [sub-caption] {\ includegraphics {} \ label {fig: 1}} \ caption {main caption} \ label {fig} - person Crowley; 08.01.2010
comment
Хм. Я не уверен, что понимаю. Если у вас есть небольшой пример документа, в котором показана ваша проблема, опубликуйте его здесь. - person Alok Singhal; 08.01.2010
comment
Я обновил вопрос, указав свой прогресс и часть кода. Мой тестовый .tex файл очень трудно читать - person Crowley; 08.01.2010

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

person Will Robertson    schedule 08.01.2010
comment
Может, я не ясно написал. Есть ли способ узнать \label Забыть счетчик глав / разделов и сохранить GraphOne? - person Crowley; 08.01.2010