使用LaTeX中的自定义Float在\ newcommand中标记不起作用

时间:2018-04-11 07:38:48

标签: latex latex-environment

我宣布了一个包含\caption\label的新环境,因此我可以引用它。

在我的标题中:

\DeclareFloatingEnvironment[name=Tableau]{tableau}
\newenvironment{ptab}{\captionsetup{type=tableau}}{}

在我的.tex文档中:

\begin{ptab}
    \caption{A caption for my table}
    \label{ptab:myTab}
\end{ptab}

Some text with a reference (Tableau~\ref{ptab:myTab}) % Works fine !

问题:我希望通过声明可以为我写这个的\newcommand来获得一些时间。但是文本中的引用不再有用了!

在我的标题中添加:

\newcommand{\tabref}[2]{%
    \begin{ptab} 
        \label{#1} 
        \caption{#2} 
    \end{ptab}}

在.tex文档中:

\tabref{ptab:myTab}{A caption for my table}

Some text with a reference (Tableau~\ref{ptab:myTab}) % Not working "(Tableau ??)"

我知道之前已经提出类似的问题,但它并不涉及新环境。 How to reference a label within a newcommand in LATEX?

1 个答案:

答案 0 :(得分:0)

我发现\label{}\caption{}的顺序被颠倒了。 这很重要,因为LaTeX需要在之前创建一个标题,它可以用标签引用。 工作代码:

\newcommand{\tabref}[2]{%
    \begin{ptab}
        \caption{#2} 
        \label{#1}  
    \end{ptab}}

\tabref{ptab:myTab}{A caption for my table}

Some text with a reference (Tableau~\ref{ptab:myTab}) % Now working !