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

StackOverflow https://stackoverflow.com/questions/2025338

Вопрос

Я использую пакеты 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 .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top