\ref 和 \label

\ref 和 \label
\documentclass[b5paper,10pt,twoside,onecolumn,draft]{article}‎
‎\usepackage{seamb}‎
\begin{document}‎‎
\begin{lem}\label{t2} 
  This is my lemma.
\end{lem}



By Lemma \ref{t2}, we have 
\end{document}

但输出是:

引理 0.1。这是我的引理。

根据引理,我们有

我的意思是 \ref 在这里不起作用。

Ps. 重点是 seamb pachackege,包含三个文件,目前还没上线。

答案1

您可以使用 amsthm-package 轻松地自行定义任何类似定理的表述。

\documentclass[b5paper,10pt,twoside,onecolumn,draft]{article}

\usepackage{amsthm}

\theoremstyle{plain}
\newcounter{lem}
\newtheorem{lemma}[lem]{Lemma}

\begin{document}

\begin{lemma}\label{t2} 
This is my lemma.
\end{lemma}

By Lemma \ref{t2}, we have 

\end{document}

答案2

当您调用 label 时,它会将一条记录写入 auxout,下次运行 latex 时会读取该记录。要进行调试,请检查 auxout 的内容,或者在代码中展开 \@currentlabel 和 \@currentlabelname(您需要在宏定义周围使用 \makeatletter ... \makeatother)。或者,您可以在展开 \label 之前将 \@currentlabel 设置为您希望 \ref 显示的内容。

\def\label#1{% one of many definitions
  \@bsphack
  \begingroup
    \def\label@name{#1}%
    \protected@write\@auxout{}{%
      \string\newlabel{#1}{%
        {\@currentlabel}% set by \refstepcounter
        {\thepage}%
        {\@currentlabelname}% depends on type of label
        {\@currentHref}{}% used by hyperref
      }%
    }%
  \endgroup
  \@esphack
}%

\def\refstepcounter#1{\stepcounter{#1}%
    \def\@currentlabel{\csname p@#1\endcsname\csname the#1\endcsname}}%

相关内容