我有一张如下图所示的图表。我想添加一个带有图表编号的标题,并添加一个 \label 来引用该图表,这样当我使用 \ref{} 时,就会显示图表编号。
\begin{center}
\begin{tikzpicture}[scale = 1]
\begin{axis}[
x filter/.code=\pgfmathparse{#1 },
]
\addplot table {
5 25
10 100
15 225
20 400
25 625
30 900
};
\end{axis}
\end{tikzpicture}
\end{center}
有人可以解释一下我该怎么办?因为我收到了一个错误。
答案1
我详细介绍了@Mico 添加的内容:新的浮点类型、图表列表和cleveref configuration
:
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{amstext}
\usepackage{ pgfplots}
\pgfplotsset{compat=1.14}
\usepackage{caption, float}
\floatstyle{plaintop}
\newfloat{chart}{tbph}{loc}
\floatname{chart}{Chart}
\usepackage{cleveref}
\crefname{chart}{chart}{charts}
\Crefname{chart}{Chart}{Charts}
\newcommand\listofcharts{\listof{chart}{List of Charts}}
\begin{document}
\listofcharts
\vspace{8\baselineskip}
\begin{chart}
\centering
\begin{tikzpicture}[scale = 1]
\begin{axis}[
x filter/.code=\pgfmathparse{#1 },
]
\addplot table {
5 25
10 100
15 225
20 400
25 625
30 900
};
\end{axis}
\end{tikzpicture}
\caption{A chart test}\label{ch-test}
\end{chart}
We see from \cref{ch-test} …
\Cref{ch-test} shows us …
\end{document}
答案2
LaTeX 的标签引用交叉引用系统需要(通过巧妙的幕后操作)将参数\label
与最近增加的计数器变量相关联。例如,在
\section{Hello World} \label{sec:hello}
LaTeX 将字符串sec:hello
与名为 的计数器关联起来section
。另外:并非任何计数器递增方法都可以。通常,计数器必须通过 来递增。果然,LaTeX在执行与 关联的代码时\refstepcounter
使用了 的调用。\refstepcounter{section}
\section
在您的代码片段中,请注意没有与环境关联的计数器tikzpicture
。因此,如果您确实提供了诸如 之类的指令\label{mypic}
,LaTeX 别无选择,只能mypic
与最近增加的计数器关联,而该计数器(就您的文档而言)似乎就是计数器section
。
显然,这不是你的本意。该怎么办?我建议你 (a) 将整个tikzpicture
环境放在一个figure
环境中,(b) 通过语句创建标题\caption
,(c) 提供\label
说明 --\label{mypic}
完全没问题 -后语句\caption
。(另外:\caption
语句在环境中使用时figure
,会增加一个名为的计数器figure
。我知道,这并不完全是想象出来的......)
附录:我刚刚注意到你向@Bernard 发了一条评论,关于可能创建一个新的专用浮点类型。要创建一个名为 (say) 的新浮点类型chart
,你可以按如下方式操作:
加载漂浮包裹
发出指令
\newfloat{chart}{tbhp}{crt}
加载
float
包后。这将设置一个名为“chart”的浮动环境,以及一个名为“chart”的计数器变量。将环境括
tikzpicture
在chart
环境中,并\caption
像在环境中一样使用语句figure
。table
然后像在 LaTeX 文档中处理其他项目一样使用\label
和。\ref