简体   繁体   中英

How to reference a label within a newcommand in LATEX?

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM