可参考的自定义章节编号

可参考的自定义章节编号

我正在写周一、周三和周五上课的一些讲义。我想按照周和日定义的部分来组织它们,例如 1M、1W、1F、2M、2W、2F、3M 等。此外,当我在该部分中引用带标签的定理时,我希望它显示为“定理 2F.1”或“命题 3M.7”之类的内容。

(我想象的是

\section[1M]{January 6th, 2014: Applications of Nakayama's Lemma}

\begin{theorem}\label{Nakayama} ... \end{theorem}

(...然后,稍后...)

...Thus, it follows by \ref{Nakayama} that...

这将输出“...因此,根据定理 1M.1 可知...”)

有没有办法创建一个可以像这样引用的自定义编号方案?我能得到最接近的方案是什么?

答案1

\documentclass{article}

\newtheorem{lemma}{Lemma}[section]

\renewcommand\thesection{\the\numexpr(1+\value{section})/3\relax
                          \ifcase\the\numexpr 2+ \value{section}-(3*((1+\the\value{section})/3))\relax
                           M\or W\or F%
                           \fi}
\begin{document}

\section{zzz}\label{z}  xxx

\section{aaa} see \ref{z} and \ref{d} and \ref{l} and \ref{ll}

\section{bbb} vvv
\begin{lemma}\label{l}llllll\end{lemma}
\begin{lemma}\label{ll}llllll\end{lemma}

\section{cc} vvv
\section{ddd}\label{d} vvv
\section{eee} vvv
\section{ff} vvv
\section{ggg} vvv
\end{document}

答案2

每个计数器在\refstep被 ped 时,都会将其内容存储在\@currentlabel用作参考的 中。但是,它们还带有一些“父引用”。您可以将定理(称为\p@theorem)的这个父引用更新为 的可选参数\section

在此处输入图片描述

\documentclass{article}
\usepackage{amsthm,etoolbox}% http://ctan.org/pkg/{amsthm,etoolbox}
\newtheorem{theorem}{Theorem}
\makeatletter
%\newcommand{\p@section}{}
\patchcmd{\@sect}% <cmd>
  {\@xsect}% <search>
  {\xdef\p@theorem{#7.}\@xsect}% <replace>
  {}{}% <success><replace>
\makeatother

\begin{document}

\section[1M]{January 6th, 2014: Applications of Nakayama's Lemma}

blah

\begin{theorem}\label{Nakayama}
blah blah
\end{theorem}

Some more blah. Thus, it follows by Theorem~\ref{Nakayama} that

\end{document}

如果您不提供可选参数,则可能需要做更多的工作来删除任何内容\section

如果你希望将其用于其他类似定理的环境(如propositions、lemmas 等),那么你可以将它们作为替换文本的一部分添加<replace>etoolbox修补。

相关内容