我试图在论文中引用图表和子图。当我引用整个图表(包含子图)时,我得到正确的结果,如图 1.1 所示。每当我引用子图时,它都会显示罗马数字,例如图 I.1(a)。如何得到它,如图 1.1(a)。我正在添加一个最小工作示例。第一个是主文件。第二个是章节文件
\documentclass[12pt,twoside,openright]{report}
\ProvidesPackage{mypackage}
\usepackage{subfigure}
\usepackage[subfigure]{tocloft}
\usepackage[dvips]{graphicx}
\usepackage[cmex10]{amsmath}
\usepackage{setspace}
\usepackage{float}
\usepackage[margin=1in]{geometry}
\usepackage{cite}
\usepackage{caption}
\usepackage{etoolbox}
\usepackage{tabularx}
\usepackage[toc,page]{appendix}
\usepackage{acronym}
\usepackage{titletoc}
\cleardoublepage %\cleardoublepage %for openright
\renewcommand{\chaptername}{CHAPTER}
\renewcommand{\thechapter}{\Roman{chapter}}%chapter number in roman
\makeatletter
\renewcommand{\thefigure}{\arabic{chapter}.\arabic{figure}}
\renewcommand{\theequation}{\arabic{chapter}.\arabic{equation}}
\setcounter{section}{0}
\makeatletter
\renewcommand{\thesection}{\arabic{chapter}.\arabic{section}}
\setcounter{figure}{0}
\makeatletter
\renewcommand{\thefigure}{\arabic{chapter}.\arabic{figure}}
\renewcommand{\theequation}{\arabic{chapter}.\arabic{equation}}
\begin{document}
%\renewcommand{\thechapter}{\arabic{chapter}}
\include{MWCchapter_01}
\end{document}
第 MWC 章
\chapter{First Chapter}
\section{General}
If I refer entire figure I get it properly as Fig. \ref{Figure}. However if I refer subfigures, it shows roman numeral
Fig.\ref{FigureA} and
Fig. \ref{FigureB} which I dont want (it should be shown as Fig. 1.1(a) and Fig. 1.1(b)). The figures, subfigure captions and numbering are proper. However the problem comes during referencing.
%
\begin{figure}[!htbp]
\centering
\subfigure[FigureA]{%
\includegraphics[width=3in]{FigureA}
\label{FigureA}}
\subfigure[FigureB]{%
\includegraphics[width=3in]{FigureB}
\label{FigureB}}
\caption{Figure}
\label{Figure}
\end{figure}
答案1
该subfigure
包包含以下说明:
\let\p@subfigure=\thefigure
\thesubfigure
这定义了 LaTeX在创建 类型对象的交叉引用时插入的“前缀字符串” subfigure
。由于代码(在我看来,这是不恰当的!)使用设备\let
来设置宏\p@subfigure
,并且由于文档类将\thefigure
其设置report
为章节编号(罗马数字)和实际图号(阿拉伯数字)的组合,因此您最终会得到 形式的字符串I.1(a)
。
\let
这里不合适的原因是因为\let
创建了一个静态宏定义:该属性\thefigure
在以下情况下有效:\let\p@subfigure=\thefigure
是因为做了一个静态宏定义:运行在处理包含在report.cls
\thefigure
,即使在后来(在序言中)发生变化后仍继续使用。
立即的补救措施是在序言末尾运行以下代码:
\makeatletter
\renewcommand{\p@subfigure}{\thefigure}
\makeatother
这真正的补救措施subfigure
但是,首先不要使用该软件包。它已被弃用多年,并且有更好的替代品——subfig
和subcaption
软件包——可用。
答案2
在序言中添加\renewcommand{\thesection}{\arabic{section}}
、\renewcommand{\thefigure}{\arabic{figure}}
和\renewcommand\thesubfloatfigure{\thesection.\themainfigure(\alph{subfloatfigure})}
。这非常适合subfigures
环境。
梅威瑟:
\documentclass[]{article}
\usepackage{caption}
\captionsetup{justification=centering}
\usepackage{float}
\usepackage{subfloat}
\renewcommand{\thesection}{\arabic{section}} % Add this
\renewcommand{\thefigure}{\arabic{figure}} % Add this
\renewcommand\thesubfloatfigure{\thesection.\themainfigure(\alph{subfloatfigure})} % Add this
\usepackage{blindtext} % generates dummy text
\begin{document}
\section{Section Title}
\Blindtext
\begin{subfigures}
\begin{figure}
\centering
\fbox{\Huge SubFigure a}
\caption{Sample Image 1}
\end{figure}
\begin{figure}
\centering
\fbox{\Huge SubFigure b}
\caption{Sample Image 2}
\end{figure}
\end{subfigures}
\end{document}