![将定理分解成几个部分](https://linux22.com/image/362250/%E5%B0%86%E5%AE%9A%E7%90%86%E5%88%86%E8%A7%A3%E6%88%90%E5%87%A0%E4%B8%AA%E9%83%A8%E5%88%86.png)
在下面的代码中,定理的编号为 1 到 4。但我想在文本中写出名称:我想将假设分解成许多部分。我找到了一些解决方案来获得两个数值(数字和字母),但我没有找到如何保留最后一个定理的编号。
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{ntheorem}
\theoremseparator{:}
\newtheorem{hyp}{Hypothèse}
\begin{document}
\begin{hyp}
Hypothese 1
\end{hyp}
\begin{hyp}
Hypothese 2
\end{hyp}
\begin{hyp} %I have to change the environment
Hypothese 2 A
\end{hyp} %I have to change the environment
\begin{hyp} %I have to change the environment
Hypothese 2B
\end{hyp} %I have to change the environment
\end{document}
编辑这里是第一个带有“新”问题的答案的代码:我有 4C 4D 4E 而不是 4A 4B 4C
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{ntheorem}
\theoremseparator{:}
\newtheorem{hyp}{Hypothèse}
\newcounter{hyphelper}
\begin{document}
\begin{hyp}
Hypothese 1
\end{hyp}
\begin{hyp}
Hypothese 2
\end{hyp}
\makeatletter
\begingroup
\edef\hypval{\the\c@hyp}
\renewcommand{\thehyphelper}{\hypval\Alph{hyphelper}}
\let\thehyp\thehyphelper
\let\c@hyp\c@hyphelper
\begin{hyp}
Hypothese 2 A
\end{hyp}
\begin{hyp}
Hypothese 2B
\end{hyp}
\endgroup
\makeatother
\begin{hyp}
Hypothese 3
\end{hyp}
\begin{hyp}
Hypothese 4
\end{hyp}
\makeatletter
\begingroup
\edef\hypval{\the\c@hyp}
\renewcommand{\thehyphelper}{\hypval\Alph{hyphelper}}
\let\thehyp\thehyphelper
\let\c@hyp\c@hyphelper
\begin{hyp}
Hypothese 4 A
\end{hyp}
\begin{hyp}
Hypothese 4B
\end{hyp}
\begin{hyp}
Hypothese 4C
\end{hyp}
\endgroup
\makeatother
\end{document}
这是带有可接受答案的代码
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{ntheorem}
\theoremseparator{:}
\newtheorem{hyp}{Hypothèse}
\newtheorem{hyp+}{Hypothèse}[hyp]
\expandafter\renewcommand\csname thehyp+\endcsname{\thehyp\Alph{hyp+}}
\begin{document}
\begin{hyp}
Hypothèse 1
\end{hyp}
\begin{hyp}
Hypothèse 2
\end{hyp}
\begin{hyp+}
Hypothèse 2A
\end{hyp+}
\begin{hyp+}
Hypothèse 2B
\end{hyp+}
\begin{hyp}
Hypothèse 3
\end{hyp}
\begin{hyp}
Hypothèse 4
\end{hyp}
\begin{hyp+}
Hypothese 4A
\end{hyp+}
\begin{hyp+}
Hypothese 4B
\end{hyp+}
\begin{hyp+}
Hypothese 4C
\end{hyp+}
\end{document}
答案1
最简单的方法是定义一个新的环境。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{ntheorem}
\theoremseparator{:}
\newtheorem{hyp}{Hypothèse}
\newtheorem{hyp+}{Hypothèse}[hyp]
\expandafter\renewcommand\csname thehyp+\endcsname{\thehyp\Alph{hyp+}}
\begin{document}
\begin{hyp}
Hypothèse 1
\end{hyp}
\begin{hyp}
Hypothèse 2
\end{hyp}
\begin{hyp+}
Hypothèse 2A
\end{hyp+}
\begin{hyp+}
Hypothèse 2B
\end{hyp+}
\begin{hyp}
Hypothèse 3
\end{hyp}
\end{document}
答案2
这是一种不需附加软件包的方法,通过存储\c@hyp
计数器值并使用另一个计数器进行步进hyphelper
。
\let\c@hyp\c@hyphelper
“强制” LaTeXhyphelper
代替hyp
并\thehyphelper
格式化为hypval\Alph{hyphelper}
-- 全部在组内使用,以防止后续hyp
环境的“污染”。
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{ntheorem}
\theoremseparator{:}
\newtheorem{hyp}{Hypothèse}
\newcounter{hyphelper}
\begin{document}
\begin{hyp}
Hypothese 1
\end{hyp}
\begin{hyp}
Hypothese 2
\end{hyp}
\makeatletter
\begingroup
\edef\hypval{\the\c@hyp}
\renewcommand{\thehyphelper}{\hypval\Alph{hyphelper}}
\let\thehyp\thehyphelper
\let\c@hyp\c@hyphelper
\begin{hyp} %I have to change the environment
Hypothese 2 A
\end{hyp} %I have to change the environment
\begin{hyp} %I have to change the environment
Hypothese 2B
\end{hyp} %I have to change the environment
\endgroup
\makeatother
\end{document}