%% %% This is file `PJLthm.sty', %% generated with the docstrip utility. %% Copyright (C) 2021 by Jinwen XU %% %% This is part of the ProjLib Toolkit. %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at %% your option) any later version. The latest version of this license is in %% %% http://www.latex-project.org/lppl.txt %% %% and version 1.3c or later is part of all distributions of LaTeX version %% 2005/12/01 or later. %% \NeedsTeXFormat{LaTeX2e}[2020-10-01] \ProvidesPackage{PJLthm} [2021/05/20 Theorem setup and configuration] \RequirePackage{kvoptions} \RequirePackage{etoolbox} \SetupKeyvalOptions{% family = @PJLthm, prefix = @PJLthm@ } \DeclareBoolOption[false]{nothms} \DeclareBoolOption[false]{fast} \DeclareBoolOption[false]{regionalref} \ProcessKeyvalOptions*\relax \if@PJLthm@fast \@PJLthm@regionalreftrue \fi \RequirePackage{PJLlang} \RequirePackage{amsmath,amsthm} \RequirePackage{aliascnt} \PassOptionsToPackage{nameinlink}{cleveref} \RequirePackage{cleveref} \RequirePackage{xstring} \newcommand\PassFirstToSecond[2]{#2{#1}}% \NewDocumentCommand{\CreateTheorem}{sm}{% \begingroup \protected@edef\temp{#2}% \expandafter\IfEndWith\expandafter{\temp}{*}{% \expandafter\StrGobbleRight\expandafter{\temp}{1}[\temp]% \PassFirstToSecond{*}% }{% \PassFirstToSecond{}% }% {\expandafter\PassFirstToSecond% \expandafter{\temp}{\endgroup\InnerCreateTheorem{#1}}}% }% \if@PJLthm@regionalref \NewDocumentCommand{\InnerCreateTheorem}{mmmod<>d()}{% \IfBooleanTF{#1}{% \IfValueTF{#4} {\@firstoftwo} {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}% }{% \IfValueTF{#4} {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}{ \@secondoftwo} }% {% \GenericError{}% {\string\CreateTheorem\space syntax error\on@line}{% You cannot call the starred variant with optional argument,\MessageBreak nor call the unstarred variant with several optional arguments.}% {}% }{% \IfValueTF{#6}{% \IfBooleanTF{#1}{% \ifcsmacro{#2#3}% {\renewenvironment{#2#3}{\begin{#6*}}{\end{#6*}}}% {\newenvironment{#2#3}{\begin{#6*}}{\end{#6*}}}% }{% \ifcsmacro{#2#3}% {\renewenvironment{#2#3}{\begin{#6}}{\end{#6}}}% {\newenvironment{#2#3}{\begin{#6}}{\end{#6}}}% } }{% \IfBooleanTF{#1}{% \newtheorem*{#2#3}{\csname#2name\csname\languagename ABBR\endcsname\endcsname} }{% \IfValueTF{#5}{% \newtheorem{PJL#2#3}{\csname#2name\csname\languagename ABBR\endcsname\endcsname}[#5]% \newaliascnt{#2#3}{PJL#2#3}% }{% \IfValueTF{#4}{% \newtheorem{PJL#2#3}[#4]{\csname#2name\csname\languagename ABBR\endcsname\endcsname} }{% \newtheorem{PJL#2#3}{\csname#2name\csname\languagename ABBR\endcsname\endcsname} \newaliascnt{#2#3}{PJL#2#3}% }% }% \crefname{PJL#2#3}% {\csname#2name\csname\languagename ABBR\endcsname\endcsname}% {\csname#2name\csname\languagename ABBR\endcsname\endcsname}% \Crefname{PJL#2#3}% {\csname#2name\csname\languagename ABBR\endcsname\endcsname}% {\csname#2name\csname\languagename ABBR\endcsname\endcsname}% \NewDocumentEnvironment{#2#3}{} {\begin{PJL#2#3}} {\end{PJL#2#3}} }% }% }% }% \else \NewDocumentCommand{\InnerCreateTheorem}{mmmod<>d()}{% \IfBooleanTF{#1}{% \IfValueTF{#4} {\@firstoftwo} {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}% }{% \IfValueTF{#4} {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}{ \@secondoftwo} }% {% \GenericError{}% {\string\CreateTheorem\space syntax error\on@line}{% You cannot call the starred variant with optional argument,\MessageBreak nor call the unstarred variant with several optional arguments.}% {}% }{% \IfValueTF{#6}{% \IfBooleanTF{#1}{% \ifcsmacro{#2#3}% {\renewenvironment{#2#3}{\begin{#6*}}{\end{#6*}}}% {\newenvironment{#2#3}{\begin{#6*}}{\end{#6*}}}% }{% \ifcsmacro{#2#3}% {\renewenvironment{#2#3}{\begin{#6}}{\end{#6}}}% {\newenvironment{#2#3}{\begin{#6}}{\end{#6}}}% } }{% \IfBooleanTF{#1}{% \newtheorem*{#2EN#3}{\csname#2nameEN\endcsname} \newtheorem*{#2FR#3}{\csname#2nameFR\endcsname} \newtheorem*{#2DE#3}{\csname#2nameDE\endcsname} \newtheorem*{#2CN#3}{\csname#2nameCN\endcsname} \newtheorem*{#2TC#3}{\csname#2nameTC\endcsname} \newtheorem*{#2JP#3}{\csname#2nameJP\endcsname} \newtheorem*{#2RU#3}{\csname#2nameRU\endcsname} }{% \IfValueTF{#5}{% \newcounter{#2#3}[{#5}]% \expandafter\renewcommand\expandafter*% \csname the#2#3\expandafter\endcsname% \expandafter{\csname the#5\endcsname.\arabic{#2#3}}% }{% \IfValueTF{#4} {\newaliascnt{#2#3}{#4}} {\newcounter{#2#3}}% }% %--------------------------------------------------------------- \CreateTheoremNumberedLikeAliasCounter{#2}{EN}{#3}% \CreateTheoremNumberedLikeAliasCounter{#2}{FR}{#3}% \CreateTheoremNumberedLikeAliasCounter{#2}{DE}{#3}% \CreateTheoremNumberedLikeAliasCounter{#2}{CN}{#3}% \CreateTheoremNumberedLikeAliasCounter{#2}{TC}{#3}% \CreateTheoremNumberedLikeAliasCounter{#2}{JP}{#3}% \CreateTheoremNumberedLikeAliasCounter{#2}{RU}{#3}% %--------------------------------------------------------------- }% \NewDocumentEnvironment{#2#3}{} {\csname#2\csname\languagename ABBR\endcsname#3\endcsname}% {\csname end#2\csname\languagename ABBR\endcsname#3\endcsname}% }% }% }% \NewDocumentCommand{\CreateTheoremNumberedLikeAliasCounter}{mmm}{% \newaliascnt{#1#2#3}{#1#3}% \newtheorem{#1#2#3}[{#1#2#3}]{\csname#1name#2\endcsname}% \aliascntresetthe{#1#2#3}% \crefname{#1#2#3}% {\csname#1name#2\endcsname}% {\csname#1name#2\endcsname}% \Crefname{#1#2#3}% {\csname#1name#2\endcsname}% {\csname#1name#2\endcsname}% }% \fi %% English theorems names \def\theoremnameEN{Theorem} \def\lemmanameEN{Lemma} \def\propositionnameEN{Proposition} \def\corollarynameEN{Corollary} \def\propertynameEN{Property} \def\factnameEN{Fact} \def\conjecturenameEN{Conjecture} \def\definitionnameEN{Definition} \def\axiomnameEN{Axiom} \def\assumptionnameEN{Assumption} \def\conventionnameEN{Convention} \def\hypothesisnameEN{Hypothesis} \def\notationnameEN{Notation} \def\examplenameEN{Example} \def\problemnameEN{Problem} \def\questionnameEN{Question} \def\exercisenameEN{Exercise} \def\remarknameEN{Remark} \expandafter\def\csname definition-propositionnameEN\endcsname{\definitionnameEN-\propositionnameEN} \expandafter\def\csname definition-theoremnameEN\endcsname{\definitionnameEN-\theoremnameEN} %% French theorems names \def\theoremnameFR{Théorème} \def\lemmanameFR{Lemme} \def\propositionnameFR{Proposition} \def\corollarynameFR{Corollaire} \def\propertynameFR{Propriété} \def\factnameFR{Fait} \def\conjecturenameFR{Conjecture} \def\definitionnameFR{Définition} \def\axiomnameFR{Axiome} \def\assumptionnameFR{Supposition} \def\conventionnameFR{Convention} \def\hypothesisnameFR{Hypothèse} \def\notationnameFR{Notation} \def\examplenameFR{Exemple} \def\problemnameFR{Problème} \def\questionnameFR{Question} \def\exercisenameFR{Exercice} \def\remarknameFR{Remarque} \expandafter\def\csname definition-propositionnameFR\endcsname{\definitionnameFR-\propositionnameFR} \expandafter\def\csname definition-theoremnameFR\endcsname{\definitionnameFR-\theoremnameFR} %% German theorems names \def\theoremnameDE{Satz} \def\lemmanameDE{Lemma} \def\propositionnameDE{Proposition} \def\corollarynameDE{Korollar} \def\propertynameDE{Eigenschaft} \def\factnameDE{Fakt} \def\conjecturenameDE{Vermutung} \def\definitionnameDE{Definition} \def\axiomnameDE{Axiom} \def\assumptionnameDE{Annahme} \def\conventionnameDE{Konvention} \def\hypothesisnameDE{Hypothese} \def\notationnameDE{Notation} \def\examplenameDE{Beispiel} \def\problemnameDE{Problem} \def\questionnameDE{Frage} \def\exercisenameDE{Übung} \def\remarknameDE{Bemerkung} \expandafter\def\csname definition-propositionnameDE\endcsname{\definitionnameDE-\propositionnameDE} \expandafter\def\csname definition-theoremnameDE\endcsname{\definitionnameDE-\theoremnameDE} %% Chinese theorems names \def\theoremnameCN{定理} \def\lemmanameCN{引理} \def\propositionnameCN{命题} \def\corollarynameCN{推论} \def\propertynameCN{性质} \def\factnameCN{事实} \def\conjecturenameCN{猜想} \def\definitionnameCN{定义} \def\axiomnameCN{公理} \def\assumptionnameCN{假设} \def\conventionnameCN{约定} \def\hypothesisnameCN{假设} \def\notationnameCN{记号} \def\examplenameCN{例} \def\problemnameCN{问题} \def\questionnameCN{问题} \def\exercisenameCN{练习} \def\remarknameCN{备注} \expandafter\def\csname definition-propositionnameCN\endcsname{\definitionnameCN-\propositionnameCN} \expandafter\def\csname definition-theoremnameCN\endcsname{\definitionnameCN-\theoremnameCN} \def\theoremnameTC{定理} \def\lemmanameTC{引理} \def\propositionnameTC{命題} \def\corollarynameTC{推論} \def\propertynameTC{性質} \def\factnameTC{事實} \def\conjecturenameTC{猜想} \def\definitionnameTC{定義} \def\axiomnameTC{公理} \def\assumptionnameTC{假設} \def\conventionnameTC{約定} \def\hypothesisnameTC{假設} \def\notationnameTC{記號} \def\examplenameTC{例} \def\problemnameTC{問題} \def\questionnameTC{問題} \def\exercisenameTC{練習} \def\remarknameTC{備註} \expandafter\def\csname definition-propositionnameTC\endcsname{\definitionnameTC-\propositionnameTC} \expandafter\def\csname definition-theoremnameTC\endcsname{\definitionnameTC-\theoremnameTC} %% Japanese theorems names \def\theoremnameJP{定理} \def\lemmanameJP{補題} \def\propositionnameJP{命題} \def\corollarynameJP{系} \def\propertynameJP{性質} \def\factnameJP{事実} \def\conjecturenameJP{予想} \def\definitionnameJP{定義} \def\axiomnameJP{公理} \def\assumptionnameJP{仮定} \def\conventionnameJP{慣例} \def\hypothesisnameJP{仮設} \def\notationnameJP{記法} \def\examplenameJP{例} \def\problemnameJP{問題} \def\questionnameJP{問題} \def\exercisenameJP{練習} \def\remarknameJP{注釈} \expandafter\def\csname definition-propositionnameJP\endcsname{\definitionnameJP-\propositionnameJP} \expandafter\def\csname definition-theoremnameJP\endcsname{\definitionnameJP-\theoremnameJP} %% Russian theorems names \def\theoremnameRU{Теорема} % Теоре́ма \def\lemmanameRU{Лемма} % Ле́мма \def\propositionnameRU{Предложение} % Предложе́ние \def\corollarynameRU{Следствие} % Сле́дствие \def\propertynameRU{Имущество} % Иму́щество \def\factnameRU{Факт} \def\conjecturenameRU{Гипотеза} % Гипо́теза \def\definitionnameRU{Определение} % Определе́ние \def\axiomnameRU{Аксиома} % Аксио́ма \def\assumptionnameRU{Предположение} % Предположе́ние \def\conventionnameRU{Конвенция} % Конве́нция \def\hypothesisnameRU{Гипотеза} % Гипо́теза \def\notationnameRU{Нотация} % Нота́ция \def\examplenameRU{Пример} % Приме́р \def\problemnameRU{Проблема} % Пробле́ма \def\questionnameRU{Вопрос} % Вопро́с \def\exercisenameRU{Упражнение} % Упражне́ние \def\remarknameRU{Замечание} % Замеча́ние \expandafter\def\csname definition-propositionnameRU\endcsname{\definitionnameRU-\propositionnameRU} \expandafter\def\csname definition-theoremnameRU\endcsname{\definitionnameRU-\theoremnameRU} \newif\ifPJLthm@IsBook \ifdefined\chapter\PJLthm@IsBooktrue\else\PJLthm@IsBookfalse\fi \if@PJLthm@nothms\else %% Theorem environments \ifbool{PJLthm@IsBook}{ \newaliascnt{highest}{chapter} }{ \newaliascnt{highest}{section} } \CreateTheorem{theorem} \CreateTheorem{lemma}[theorem] \CreateTheorem{proposition}[theorem] \CreateTheorem{corollary}[theorem] \CreateTheorem{definition-proposition}[theorem] \CreateTheorem{definition-theorem}[theorem] \CreateTheorem{property}[theorem] \CreateTheorem{fact}[theorem] \CreateTheorem{conjecture}[theorem] \CreateTheorem*{theorem*} \CreateTheorem*{lemma*} \CreateTheorem*{proposition*} \CreateTheorem*{corollary*} \CreateTheorem*{definition-proposition*} \CreateTheorem*{definition-theorem*} \CreateTheorem*{property*} \CreateTheorem*{fact*} \CreateTheorem*{conjecture*} \theoremstyle{definition} \CreateTheorem{definition}[theorem] \CreateTheorem{axiom}[theorem] \CreateTheorem{assumption}[theorem] \CreateTheorem{convention}[theorem] \CreateTheorem{hypothesis}[theorem] \CreateTheorem{notation}[theorem] \CreateTheorem{example}[theorem] \CreateTheorem{problem}[theorem] \CreateTheorem{question}[theorem] \CreateTheorem{exercise}[theorem] \CreateTheorem*{definition*} \CreateTheorem*{axiom*} \CreateTheorem*{assumption*} \CreateTheorem*{convention*} \CreateTheorem*{hypothesis*} \CreateTheorem*{notation*} \CreateTheorem*{example*} \CreateTheorem*{problem*} \CreateTheorem*{question*} \CreateTheorem*{exercise*} \theoremstyle{remark} \CreateTheorem{remark} \CreateTheorem*{remark*} \numberwithin{equation}{highest} \fi \gappto{\PJLlang@langconfig@chinese}{% \crefname{equation}{式}{式}% \crefname{figure}{图}{图}% \crefname{table}{表}{表}% \crefname{appendix}{附录}{附录}% \Crefname{equation}{式}{式}% \Crefname{figure}{图}{图}% \Crefname{table}{表}{表}% \Crefname{appendix}{附录}{附录}% \def\crefpairconjunction{~和~}% \def\crefmiddleconjunction{、}% \def\creflastconjunction{~和~}% \def\crefpairgroupconjunction{~和~}% \def\crefmiddlegroupconjunction{、}% \def\creflastgroupconjunction{~和~}% \def\crefrangeconjunction{~}% } \gappto{\PJLlang@langconfig@tchinese}{% \crefname{equation}{式}{式}% \crefname{figure}{圖}{圖}% \crefname{table}{表}{表}% \crefname{appendix}{附錄}{附錄}% \Crefname{equation}{式}{式}% \Crefname{figure}{圖}{圖}% \Crefname{table}{表}{表}% \Crefname{appendix}{附錄}{附錄}% \def\crefpairconjunction{~與~}% \def\crefmiddleconjunction{、}% \def\creflastconjunction{~與~}% \def\crefpairgroupconjunction{~與~}% \def\crefmiddlegroupconjunction{、}% \def\creflastgroupconjunction{~與~}% \def\crefrangeconjunction{~}% } \gappto{\PJLlang@langconfig@japanese}{% \crefname{equation}{式}{式}% \crefname{figure}{図}{図}% \crefname{table}{表}{表}% \Crefname{appendix}{付録}{付録}% \Crefname{equation}{式}{式}% \Crefname{figure}{図}{図}% \Crefname{table}{表}{表}% \Crefname{appendix}{付録}{付録}% \def\crefpairconjunction{~と~}% \def\crefmiddleconjunction{~と~}% \def\creflastconjunction{~と~}% \def\crefpairgroupconjunction{~と~}% \def\crefmiddlegroupconjunction{~と~}% \def\creflastgroupconjunction{~と~}% \def\crefrangeconjunction{〜}% } \gappto{\PJLlang@langconfig@russian}{% \crefname{equation}{уравнение}{уравнения}% \crefname{figure}{рис.}{рис.}% \crefname{table}{таблица}{таблицы}% \crefname{appendix}{приложение}{приложения}% \Crefname{equation}{Уравнение}{Уравнения}% \Crefname{figure}{Рис.}{Рис.}% \Crefname{table}{Таблица}{Таблицы}% \Crefname{appendix}{Приложение}{Приложения}% \def\crefpairconjunction{~и~}% \def\crefmiddleconjunction{,~}% \def\creflastconjunction{~и~}% \def\crefpairgroupconjunction{~и~}% \def\crefmiddlegroupconjunction{,~}% \def\creflastgroupconjunction{~и~}% \def\crefrangeconjunction{~\textasciitilde~}% } \endinput %% %% End of file `PJLthm.sty'.