Как создать собственный и необычный \sub<float> команда
Вопрос
Я использую пакеты subfigure
и float
создавать рисунки и таблицы, которые я хочу создать, и я пытаюсь создать свою собственную среду graph
с собственным счетчиком и подписью (решаемая там, благодаря dmckee).Теперь я хотел бы создать \subgraph
команда, которая будет делать точно то же самое, что и \subfigure
команда.
Я попытался создать свою собственную команду с помощью propreate counter (Помогал здесь, спасибо Алексею).Но проблема возникает при использовании \ref
команда.Ссылка на \subfigure
ВОЗВРАТ 2.1(а) но ссылка на \subgraph
ВОЗВРАТ 1.
Когда я пытался выяснить, как решить эту проблему, я прочитал subfig
руководство, где я нашел \newsubfloat
команда с примером.Первая ошибка заключалась в использовании subfig
команды в subfigure
и я застрял там.Если я использую subfigure
Я могу получить доступ \subfigure
но не могу заставить \subgraph
работает, когда я использую subfig
Я могу получить доступ \subfloat
в graph
но не в figure
и \ref
ВОЗВРАТ 1.0а вместо того , чтобы 1.1 (а).
определение с помощью 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-a вместо 1.1.1
Достижения:
Код для 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}
Решение
Я думаю, что ваш 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.
Другие советы
Я не могу сейчас уточнить, но вы хотите использовать efstepcounter вместо \addtocounter .