I have created a newcommand \\figc to create figures quickly for my document. However, I had trouble referencing it. The document is being compiled successfully but is being shown as Figure (??).
\newcommand{\figc}[3]{
\begin{figure}[H]
\centering
\includegraphics[width={#3}]{figures/{#1}.jpg}
\caption{{#2}}
\label{fig:{#1}}
\end{figure}
fig:{#1}} ----> However, this part is displayed correctly in the PDF as fig:samplefig
Here is a sample text to reference (Figure \ref{fig:samplefig}).
\figc{samplefig}{Sample Figure}{3in}
Don't use fig:{#1}
in your \\label
, but instead use fig:#1
:
\documentclass{article}
\usepackage{float,graphicx}
\newcommand{\figc}[3]{%
\begin{figure}[H]
\centering
\includegraphics[width=#3]{#1.jpg}
\caption{#2}
\label{fig:#1}
\end{figure}
fig:#1% Set the reference as well
}
\begin{document}
Here is a sample text to reference (Figure \ref{fig:example-image}).
\figc{example-image}{Sample Figure}{3in}
\end{document}
There's a difference between what is set in a document, and its internal representation. That's why \\label{fig:{abc}}
is different from \\label{fig:abc}
, and therefore can provide an undefined reference.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.