2010-01-08 43 views
2

我使用包subfigurefloat创建图形和表格,我要创建我试图创建自己的环境有自己的柜台和标题(solved there ,感谢dmckee)。现在我想创建\subgraph命令,其命令与\subfigure命令完全相同。如何创建自己的和花哨的子<float>命令

我试着用propreate counter创建自己的命令(Assisted here,感谢Alexey)。但是使用\ref命令会出现问题。参考\subfigure返回2.1(a)但参考\subgraph返回。

正如我试图找出如何解决这个问题,我读subfig手册,我发现\newsubfloat命令与一个例子。第一个错误是在subfigure中使用了subfig的命令,我被困在那里。如果我使用subfigure我可以访问\subfigure,但不能强迫\subgraph工作,当我使用subfig我可以存取权限\subfloat在但不是在figure\ref回报1.0A代替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),并使用它的环境之外。唯一的方法是如何使counter(子图和图)正确地引用\captionof{graph}之前\subgraph

所以,我的新问题是:如何在子图之前执行\captionof{graph}并在其下面进行排版?而如何强制\ref显示的1.1-A,而不是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反正是不推荐)。与错误的引用的问题可能与你using \label incorrectly。你必须有\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

是的,我同意'\ label'命令在'\ caption'后面的位置。我对标准浮点数没有任何问题,重点在'\ subfloat'中并且指向它。我习惯使用\ subfigure [sub-caption] {\ includegraphics {} \ label {fig:1}} \ caption {main caption} \ label {fig} – Crowley 2010-01-08 11:10:45

+0

嗯。我不确定自己明白。如果您有一个可以显示您的问题的小示例文档,请将其发布到此处。 – 2010-01-08 11:14:14

+0

我更新了我的进度和部分代码的问题。我的测试'.tex'文件很难阅读 – Crowley 2010-01-08 14:43:40

0

我现在不能细说,但要使用\ refstepcounter代替\ addtocounter。

+0

也许我没有写清楚。有什么方法可以告诉'\ label'“忘记章节/节计数器并存储GraphOne”? – Crowley 2010-01-08 11:15:57