\documentclass[final,a4paper,11pt,oneside,openany]{memoir}
\usepackage[naustrian]{babel}
\usepackage[thmmarks]{ntheorem}
\usepackage{thm-restate}
\newcounter{reqcounter}
\newtheorem{RQ}[reqcounter]{Neu}
\begin{document}
\begin{restatable}{RQ}{rqFenster}
Fenster mit 3-Scheiben Isolierverglasung, mit Rolladen und Fensterbank. \\
\textit{Farbe: Innen Weiß, Außen weiß; Beschlag: Silber.}
\end{restatable}
\rqFenster
\end{document}
生成了一份符合我预期的文档,但也给出了一个警告:
Latexmk: List of undefined refs and citations:
Label `thmt@@rqFenster' multiply defined
Label `thmt@@rqFenster@data' multiply defined
Latexmk: Summary of warnings from last run of (pdf)latex:
Latex found 2 multiply defined reference(s)
是不是我使用方式不正确?
是否也可以通过某种方式表明它实际上是一个重述定理?例如,再次输入相同的数字,然后输入一个子数字来表明重述的频率?
Neu 1.1 Fenster mit 3-Scheiben Isolierverglasung, mit Rolladen und Fenster-
bank.
Farbe: Innen Weiß, Außen weiß; Beschlag: Silber.
Neu 1.2 Fenster mit 3-Scheiben Isolierverglasung, mit Rolladen und Fenster-
bank.
Farbe: Innen Weiß, Außen weiß; Beschlag: Silber.
或者甚至可以改变重述中使用的定理吗?例如,我想用相同的文本重述定理,但不是以 RQ 的形式而是以 RQopt 的形式?
\rqFenster[RQopt] % make rqFenster now being like:
\begin{restatable}{RQopt}{rqFenster}
Fenster mit 3-Scheiben Isolierverglasung, mit Rolladen und Fensterbank. \\
\textit{Farbe: Innen Weiß, Außen weiß; Beschlag: Silber.}
\end{restatable}
所以基本上我想了解一下重述机制可以做什么,或者是否有任何方法可以扩展重述机制。只有带星号的版本有效,这对我来说很奇怪?
答案1
的目的thm-restate
是用相同的数字。
你可以自己定义业务。
\documentclass[final,a4paper,11pt,oneside,openany]{memoir}
\usepackage[naustrian]{babel}
\usepackage[thmmarks]{ntheorem}
\ExplSyntaxOn
\prop_new:N \g_markus_restate_prop
\NewDocumentEnvironment{torestate}{mmo+b}
{% #1 = theorem type, #2 = key for restating, #3 = attribution, #4 = the contents
% state the theorem
\IfNoValueTF{#3}{\begin{#1}}{\begin{#1}[#3]}#4\end{#1}
% save the contents
\prop_gput:Nnn \g_markus_restate_prop { #2-type } { #1 }
\IfValueT{#3}
{
\prop_gput:Nnn \g_markus_restate_prop { #2-attr } { [#3] }
}
\prop_gput:Nnn \g_markus_restate_prop { #2-text } { #4 }
}{}
\NewDocumentCommand{\restate}{mo}
{% #1 = key for restating, #2 = optional label
\use:e
{
\exp_not:N \begin{ \prop_item:Nn \g_markus_restate_prop { #1-type } }
\prop_item:Nn \g_markus_restate_prop { #1-attr }
}
\IfValueT{#2}{ \label{#2} }
\prop_item:Nn \g_markus_restate_prop { #1-text }
\use:e { \exp_not:N \end{ \prop_item:Nn \g_markus_restate_prop { #1-type } } }
}
\ExplSyntaxOff
\newtheorem{RQ}{Neu}
\begin{document}
\begin{torestate}{RQ}{rqFenster}
Fenster mit 3-Scheiben Isolierverglasung, mit Rolladen und Fensterbank. \\
\textit{Farbe: Innen Weiß, Außen weiß; Beschlag: Silber.}
\end{torestate}
\begin{torestate}{RQ}{somekey}[With attribution]
Whatever
\end{torestate}
\restate{rqFenster}[xyz]
Cross-reference: \ref{xyz}
\restate{somekey}
\end{document}
答案2
您应该使用带星号的版本rqFenster
。我不知道如何调整定理编号,但也许您可以使用下面的一些介绍性文字。
% theoremnumprob.tex SE 591359
\documentclass[final,a4paper,11pt,oneside,openany]{memoir}
\usepackage{lipsum}
\usepackage[naustrian]{babel}
\usepackage[thmmarks]{ntheorem}
\usepackage{thm-restate}
\newcounter{reqcounter}
\newtheorem{RQ}[reqcounter]{Neu}
\begin{document}
\begin{restatable}{RQ}{rqFenster}
Fenster mit 3-Scheiben Isolierverglasung, mit Rolladen und Fensterbank. \\
\textit{Farbe: Innen Weiß, Außen weiß; Beschlag: Silber.}
\end{restatable}
\lipsum[1]
Remembering theorem \ref{thmt@@rqFenster} on page \pageref{thmt@@rqFenster}.
\rqFenster*
\end{document}