选自:https://www.zhihu.com/question/552513350/answer/2667824611
我在使用网上找到的一个模板的时候出现了这样一个问题: 比如说我给自己的某一个定理设置的计数器是按照section计数的, 也就是说第一章第二节的第三个定理应该计数器的数值显示为1.2.3, 但是我在用ref实际援引这个计数器数值的时候却显示为1.2.1, 原因是这个定理我放在了第一章第二节第一小节(subsection), 在这一小节它是第一个定理. 所以最终的结果是我的定理环境编译出来显示的thetheorem的结果(1.2.3)和用ref{label}显示的结果(1.2.1)对不上. 这可能是因为设置了什么导致的?
具体地话, 是这样的:
这是某一个定理, 它对应的源码是:
\begin{theorem}[环的扩张定理]\label{thm:Ring2 3.3}
设$\hat S,R$是环, $\hat S\cap R=\varnothing$且存在一个环的单同态$\hat\phi:\hat S\hookrightarrow R$, 则存在环$S$和环同构$\phi:S\simeq R$使得$S$是$\hat S$的环扩张, 且$\phi|_{\hat S}=\hat\phi$.
\end{theorem}
但是我在使用\ref{thm:Ring2 3.3}
这个指令的时候显示的效果确是这样的:
变成了1.2.3
作者:慕子
链接:https://www.zhihu.com/question/552513350/answer/2667824611
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
把 \newtcolorbox{wwtheorem}[3][]{...}
里的
step and label={tcbthm}{#3},
改成 step=tcbthm, IfEmptyF={#3}{label={#3}},
IfEmptyF
是 tcolorbox
v5.1.0 (2022-06-22) 新加入的{\bf \Theorem\ \thetcbthm.~#2}
改成 {\bf \Theorem\ \thetcbthm.\ifstrempty{#2}{}{~#2}}
[theorem](https://www.zhihu.com/search?q=theorem&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2667824611%7D)
环境的用法
\begin{theorem} ... \end{theorem}
\begin{theorem}[<title>] ... \end{theorem}
\begin{theorem}[][<label>] ... \end{theorem}
\begin{theorem}[<title>][<label>] ... \end{theorem}
辅助的修改(不一定全),
\newcommand{\thmref}[1]{...}
里,把 \ref{#1}
改成 \ref*{#1}
,避免超链接嵌套\begin{theorem}{理想的判定定理}
改成 \begin{theorem}[理想的判定定理]
, 可能是输入错误其他建议(一定不全)
\bf
了(可能要反馈给「模板」作者,下同)\thmref
的定义里,\!\,\,
加加减减,可以考虑直接手动写了theorem
环境定义里,{\end{wwtheorem} }
\usepackage[most]{tcolorbox}
后为什么还要 \tcbuselibrary{breakable, skins,theorems}
?hyperref
加载太早了,当心出问题。应用上述所有修改(其他建议部分除外),包括以上述介绍的方式为 theorem
环境添加可选标签后,得到的结果
完整例子
% !TeX TS-program = xelatex
\documentclass[twoside]{book}
\usepackage{amssymb}
\usepackage[dvipsnames,svgnames,x11names,table]{xcolor}
\usepackage{ninecolors}
\usepackage{amsmath,amsthm}
\usepackage[colorlinks,linkcolor=red, breaklinks]{hyperref}
\usepackage[most]{tcolorbox}
\tcbuselibrary{breakable, skins,theorems}
\usepackage{tikz}
\usepackage{tkz-fct}
\usetikzlibrary{calc,spy,intersections,fadings,patterns,shapes.arrows,shapes.symbols,tikzmark,shapes.geometric,shadows, shadings,backgrounds,positioning,fit}
\usepackage{graphicx,tabularx}
\definecolor{lightergray}{gray}{0.99}
\definecolor{Rhodamine}{RGB}{239,84,159}
\usepackage{physics}
\usepackage{ctex}
\newcounter{tcbthm}
\numberwithin{tcbthm}{section}
\def\tcbthmautorefname{\bf 定理}
\newcommand{\Theorem}{定理}
\newtcolorbox{wwtheorem}[3][]{
arc=0mm,breakable,enhanced,colback=lightergray,boxrule=0pt,top=8mm,drop fuzzy shadow=black!20!white,
fontupper=\upshape,
step=tcbthm,
IfEmptyF={#3}{label={#3}}, % require tcolorbox 2022-05-25 or newer
% step and label={tcbthm}{#3},
overlay unbroken = {
%标题%更改有效
\node[rectangle, %opacity=.3,
text=white, drop shadow={opacity=.3, shadow xshift=0.1cm},
inner sep=1.5mm,fill=purple5,
anchor=west,inner xsep=7mm,
font=\normalsize] at ([xshift=0cm,yshift=-3.mm]frame.north west)%
{\bf \Theorem\ \thetcbthm.\ifstrempty{#2}{}{~#2}};
\fill[color=purple5,drop shadow={opacity=0.3,shadow xshift=.3pt}] ([yshift=5pt,xshift=-5pt]frame.north west) -- ([xshift=1cm,yshift=5pt]frame.north west)-- ([xshift=-5pt,yshift=-1cm]frame.north west)--cycle;
\fill[color=black!60] ([xshift=-5pt,yshift=-1cm]frame.north west)--([xshift=0cm,yshift=-0.8cm]frame.north west)-- ([xshift=0cm,yshift=-1.2cm]frame.north west)--cycle;
\fill[black!60] ([xshift=1cm,yshift=5pt]frame.north west)-- ([xshift=0.8cm,yshift=0cm]frame.north west)--([xshift=1.2cm,yshift=0cm]frame.north west)--cycle;
%%============================%% End
\fill[purple5,drop shadow={opacity=0.3,shadow xshift=-0.008\linewidth,shadow yshift=0.0016\linewidth}] ([xshift=5pt,yshift=-5pt]frame.south east) -- ([xshift=-0.05\linewidth,yshift=-5pt]frame.south east) -- ([xshift=5pt,yshift=0.05\linewidth]frame.south east)--cycle;
\fill[black!60] ([xshift=-0.05\linewidth,yshift=-5pt]frame.south east) -- ([xshift=-0.04\linewidth,yshift=0pt]frame.south east)-- ([xshift=-0.06\linewidth,yshift=0pt]frame.south east)--cycle;
\fill[black!60] ([xshift=5pt,yshift=0.05\linewidth]frame.south east)-- ([yshift=0.04\linewidth]frame.south east) -- ([yshift=0.06\linewidth]frame.south east)--cycle;
},%上面是实际控制代码,下面的代码仅在跨页分割时生效
overlay first = {%跨页时生效
% \draw[color=gray, line width=0.2pt] (frame.north west)--([xshift=0pt]frame.north east);
%标题 %跨页时生效
\node[rectangle, %opacity=.3,
text=white, drop shadow={opacity=.3, shadow xshift=0.1cm},
inner sep=1.5mm,fill=purple5,
anchor=west,inner xsep=7mm,
font=\normalsize] at ([xshift=0cm,yshift=-3.mm]frame.north west)%
{\bf \Theorem\ \thetcbthm.\ifstrempty{#2}{}{~#2}};
\fill[color=purple5,drop shadow={opacity=0.3,shadow xshift=.3pt}] ([yshift=5pt,xshift=-5pt]frame.north west) -- ([xshift=1cm,yshift=5pt]frame.north west)-- ([xshift=-5pt,yshift=-1cm]frame.north west)--cycle;
\fill[color=black!60] ([xshift=-5pt,yshift=-1cm]frame.north west)--([xshift=0cm,yshift=-0.8cm]frame.north west)-- ([xshift=0cm,yshift=-1.2cm]frame.north west)--cycle;
\fill[black!60] ([xshift=1cm,yshift=5pt]frame.north west)-- ([xshift=0.8cm,yshift=0cm]frame.north west)--([xshift=1.2cm,yshift=0cm]frame.north west)--cycle;
},%保持边缘的变化
overlay last = {%跨页时生效
% \draw[color=gray, line width=0.2pt] (frame.south west)--([xshift=0pt]frame.south east);
%%============================%% End
\fill[purple5,drop shadow={opacity=0.3,shadow xshift=-0.008\linewidth,shadow yshift=0.0016\linewidth}] ([xshift=5pt,yshift=-5pt]frame.south east) -- ([xshift=-0.05\linewidth,yshift=-5pt]frame.south east) -- ([xshift=5pt,yshift=0.05\linewidth]frame.south east)--cycle;
\fill[black!60] ([xshift=-0.05\linewidth,yshift=-5pt]frame.south east) -- ([xshift=-0.04\linewidth,yshift=0pt]frame.south east)-- ([xshift=-0.06\linewidth,yshift=0pt]frame.south east)--cycle;
\fill[black!60] ([xshift=5pt,yshift=0.05\linewidth]frame.south east)-- ([yshift=0.04\linewidth]frame.south east) -- ([yshift=0.06\linewidth]frame.south east)--cycle;
}
#1
}
\NewDocumentEnvironment{theorem}{O{} O{} O{}}{\smallskip\begin{wwtheorem}{#1}{#2}#3}{\end{wwtheorem}}
\newcommand{\lt}{<}
\newcommand{\thmref}[1]{\hyperref[#1]{定理\!\,\,\ref*{#1}}}
\newcommand{\ideal}{\sphericalangle}
\begin{document}
\chapter{环论基础}\label{chap:Ring 1}
\section{环的相关定义以及分类}\label{sec:Ring 1}
\subsection{环的定义以及分类}\label{sec:Ring1.1}
\begin{theorem}[][1]
$\mathbb{Z}_p$是域当且仅当$p$为质数.
\end{theorem}
\begin{theorem}[][2]
任何一个域的特征要么为0, 要么为质数.
\end{theorem}
\subsection{子环和环的理想}\label{sec:Ring1.2}
\begin{theorem}[子环的判定定理][3]
设$R$是一个环, $S$是它的非空子集, 则$S\lt R$当且仅当对任意$a,b\in S$, 有(1) $a-b\in S$; (2) $ab\in S$.
\end{theorem}
\begin{theorem}[理想的判定定理][4]
设$R$是一个环, $I$是它的非空子集, 则$I$是$R$的左(右)理想当且仅当(1) 对于任意$a,b\in I$, 有$a-b\in I$; (2) 对于任意的$r\in R$和$i\in I$, 有$ri\in I$($ir\in I$).
\end{theorem}
\begin{theorem}[][5]
一个环中任意多个左(右)理想的交还是左(右)理想.
\end{theorem}
\section{环的同态定理与扩张}\label{sec:Ring2_1}
\subsection{商环}\label{sec:Ring2_1.1}
\begin{theorem}[][6]
在环$\expval{R,+,\cdot}$上定义等价关系$a\sim b:=a-b\in I$, 则这个等价关系关于环运算成同余关系当且仅当$I$是环$R$的理想.
\end{theorem}
\subsection{环的同态定理}\label{sec:Ring2_1.2}
\begin{theorem}[环同态的性质][7]
设$\phi:R\to S$是环同态, 如果$M\lt R$, $N\lt S$, 则
(1) $\phi[M]\lt\phi[R]\lt S$;
(2) 若$M\ideal R$, 则$\phi[M]\ideal\phi[R]$;
(3) $\phi^{-1}[N]\lt R$;
(4) 若$N\ideal S$, 则$\phi^{-1}[N]\ideal R$.
\end{theorem}
\begin{theorem}[环的同态定理][8]
设$f:R\to S$是环的满同态, $K=\ker f$是同态核, $I$是$R$的包含同态核的理想, 则$R/I\simeq S/f[I]$.
\end{theorem}
\begin{theorem}[环的第二同构定理][9]
如果$I$是环$R$的理想, $S$是环$R$的子环, 则(1) $S+I:=\{s+i\mid i\in I,s\in S\}$是环; (2) $S\cap I$是$S$的理想, $I$是$S+I$的理想; (3)且有环同构$S/(S\cap I)\simeq (S+I)/I$.
\end{theorem}
\begin{theorem}[环的第三同构定理][10]
如果$I$和$J$是环$R$的理想且$I\subseteq J$, 则$I$是$J$的理想且$(R/I)/(J/I)\simeq R/J$.
\end{theorem}
\subsection{环的扩张定理}\label{sec:Ring2_1.3}
\begin{theorem}[环的扩张定理][11]
设$\hat S,R$是环, $\hat S\cap R=\varnothing$且存在一个环的单同态$\hat\phi:\hat S\hookrightarrow R$, 则存在环$S$和环同构$\phi:S\simeq R$使得$S$是$\hat S$的环扩张, 且$\phi|_{\hat S}=\hat\phi$.
\end{theorem}
\section{引用定理}
\begin{center}
\begin{tabular}{c|cc}
\hline
显示 & 真值 & 所在位置\\
\hline
\thmref{1}&定理1.1.1& subsection 1.1.1 \\
\thmref{2}&定理1.1.2& subsection 1.1.1 \\
\thmref{3}&定理1.1.3& subsection 1.1.2 \\
\thmref{4}&定理1.1.4& subsection 1.1.2 \\
\thmref{5}&定理1.1.5& subsection 1.1.2 \\
\thmref{6}&定理1.2.1& subsection 1.2.1 \\
\thmref{7}&定理1.2.2& subsection 1.2.2 \\
\thmref{8}&定理1.2.3& subsection 1.2.2 \\
\thmref{9}&定理1.2.4& subsection 1.2.2 \\
\thmref{10}&定理1.2.5& subsection 1.2.2 \\
\thmref{11}&定理1.2.6& subsection 1.2.3 \\
\hline
\end{tabular}
\end{center}
\end{document}