我正在使用 LyX 和“定理 (AMS,按类型编号)”和“定理 (AMS 扩展,按类型编号)”模块。我希望得到以下输出:
公理 1. Lorem。
公理 1'。伊普萨姆。
有没有办法使用 LyX 模块 + ERT 来实现这一点?在此链接中 (公理或假设的自定义枚举),有人用纯 TeX 做了这个。由于我是初学者,我不知道如何使用它来解决我的问题。也许解决方案是编辑 LyX 的定理模块文件,但我不知道该怎么做。在另一个链接中 (如何使“声明”环境看起来像“定理”环境?)有一个编辑 LyX 模块文件的示例来获取您想要的内容。
答案1
在 LyX 的本地布局中添加以下内容(文档 > 设置... > 本地布局):
#\DeclareLyXModule{Other}
#DescriptionBegin
#Defines Axiomp (primed axioms)
#DescriptionEnd
#Requires: theorems-ams-extended
#Category: theorems
Format 35
Requires amsmath
# The environments defined (regular and starred) are :
# - Axiomp
Style Axiomp
CopyStyle Theorem
DependsOn Theorem
LatexName axp
LabelString "Axiom \theaxp."
Preamble
\usepackage{etoolbox}
\theoremstyle{plain}
\newtheorem{axp}{\protect\axiomname}
\makeatletter
\patchcmd{\axp}{\th@plain}{\th@plain\setcounter{axp}{\numexpr\value{thm}-1}}{}{}
\renewcommand{\theaxp}{\arabic{axp}$'$}
\makeatother
EndPreamble
LangPreamble
\providecommand{\axiomname}{_(Axiom)}
EndLangPreamble
BabelPreamble
\addto\captions$$lang{\renewcommand{\axiomname}{_(Axiom)}}
EndBabelPreamble
End
单击“确认”以将其添加Axiomp
到样式列表中。虽然您的显示可能类似于
你的输出应该导致
如果你希望更多的控制编号,然后您可以将以下内容添加到文档>设置> LaTeX 序言中:
\makeatletter
\renewcommand{\axp}{%
\@@thm
{\let\thm@swap\@gobble\th@plain}
{axp}
{\protect\axiomname}}
\def\@@thm#1#2#3{% modified from original \@thm
\ifhmode\unskip\unskip\par\fi
\normalfont
\trivlist
\let\thmheadnl\relax
\let\thm@swap\@gobble
\thm@notefont{\fontseries\mddefault\upshape}%
\thm@headpunct{.}% add period after heading
\thm@headsep 5\p@ plus\p@ minus\p@\relax
\thm@space@setup
#1% style overrides
\@topsep \thm@preskip % used by thm head
\@topsepadd \thm@postskip % used by \@endparenv
\def\@tempa{#2}\ifx\@empty\@tempa
\def\@tempa{\@oparg{\@@begintheorem{#3}{}}[]}%
\else
\setcounter{#2}{\value{ax}}%
\def\@tempa{\@oparg{\@@begintheorem{#3}{\csname the#2\endcsname}}[]}%
\fi
\@tempa
}
\def\@@begintheorem#1#2[#3]{%
\typeout{hello}%
\def\myvar{#3}\show\myvar%
\deferred@thm@head{\the\thm@headfont \thm@indent
\@ifempty{#1}{\let\thmname\@gobble}{\let\thmname\@iden}%
\@ifempty{#2}{\let\thmnumber\@gobble}{\let\thmnumber\@iden}%
\@ifempty{#3}{}{\setcounter{axp}{#3}}%\@ifempty{#3}{\let\thmnote\@gobble}{\let\thmnote\@iden}%
\let\thmnote\@gobble%
\thm@swap\swappedhead\thmhead{#1}{#2}{#3}%
\the\thm@headpunct
\thmheadnl % possibly a newline.
\hskip\thm@headsep
}%
\ignorespaces}
\makeatother
它修改与带引数的公理 ( ) 相关的定理环境,axp
以重新路由到专门的\@@thm
和\@@begintheorem
构造。输入形式
产量
正如 LyX wiki 中提到的那样,需要使用 ERT 作为可选参数如何向环境添加可选参数:
许多 LaTeX 环境接受影响其行为的可选参数。
theorem
例如,环境接受排版在定理编号后的可选参数,通常用作定理的名称或给予其发现者的荣誉。在 LaTeX 中,这将这样写:\begin{theorem}[Cohen, 1961]
或\begin{theorem}[Schröder-Bernstein Theorem]
,结果如下:定理 1.1 (Cohen, 1961)。
定理 1.2 (Schröder-Bernstein 定理)。LyX 没有提供明显的方法来做到这一点,但实际上它非常简单。您需要做的就是在 LyX 中出现“定理 1.2”或其他内容后立即将可选参数输入为 ERT。它之所以有效,是因为可选参数跟在环境声明之后。