Как создать собственную и необычную команду \ sub <float> - PullRequest
2 голосов
/ 08 января 2010

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

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

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

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 ]

2 голосов
/ 08 января 2010

Я думаю, что ваше 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.
0 голосов
/ 08 января 2010

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

...