summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/asternote/README.md32
-rw-r--r--macros/latex/contrib/asternote/asternote-en.md74
-rw-r--r--macros/latex/contrib/asternote/asternote-ja.md74
-rw-r--r--macros/latex/contrib/asternote/asternote.sty143
-rw-r--r--macros/latex/contrib/asternote/asternote_example.tex19
-rw-r--r--macros/latex/contrib/hideanswer/README.md30
-rw-r--r--macros/latex/contrib/hideanswer/hideanswer-en.md77
-rw-r--r--macros/latex/contrib/hideanswer/hideanswer-ja.md79
-rw-r--r--macros/latex/contrib/hideanswer/hideanswer.sty76
-rw-r--r--macros/latex/contrib/hideanswer/hideanswer_example.tex38
-rw-r--r--macros/latex/contrib/inlinelabel/README.md31
-rw-r--r--macros/latex/contrib/inlinelabel/inlinelabel-en.md55
-rw-r--r--macros/latex/contrib/inlinelabel/inlinelabel-ja.md55
-rw-r--r--macros/latex/contrib/inlinelabel/inlinelabel.sty55
-rw-r--r--macros/latex/contrib/inlinelabel/inlinelabel_example.tex11
-rw-r--r--macros/latex/contrib/jpnedumathsymbols/README.md44
-rw-r--r--macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols-en.md317
-rw-r--r--macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols-ja.md316
-rw-r--r--macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols.sty625
-rw-r--r--macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols_example.pdfbin0 -> 29830 bytes
-rw-r--r--macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols_example.tex132
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin580817 -> 655594 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex348
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_a.pngbin0 -> 9278 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_b.pngbin0 -> 13958 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c.pngbin0 -> 11759 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c2.pngbin0 -> 9989 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_d.pngbin0 -> 7316 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_e.pngbin0 -> 9599 bytes
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty104
30 files changed, 2728 insertions, 7 deletions
diff --git a/macros/latex/contrib/asternote/README.md b/macros/latex/contrib/asternote/README.md
new file mode 100644
index 0000000000..43e5e01623
--- /dev/null
+++ b/macros/latex/contrib/asternote/README.md
@@ -0,0 +1,32 @@
+# Asternote Package
+
+This package can output annotation symbols enclosed in square brackets and marked with an asterisk.
+
+
+## System Requirements
+
++ TeX format: LaTeX2e
++ TeX engine: pTeX, upTeX
+
+Since the unit zw is used, it can be used only in the pTeX series.
+
+
+## Installation
+
+Move asternote.sty file to $TEXMF/tex/latex/asternote.
+
+
+## License
+
+This package released under [the MIT license](https://ctan.org/license/mit).
+
+
+## Revision History
+
++ Version 1.0 2022-06-28
+ + The first public version.
+
+
+---
+
+[Yukoh KUSAKABE](https://twitter.com/metaphysicainfo) (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/asternote/asternote-en.md b/macros/latex/contrib/asternote/asternote-en.md
new file mode 100644
index 0000000000..43655aa485
--- /dev/null
+++ b/macros/latex/contrib/asternote/asternote-en.md
@@ -0,0 +1,74 @@
+# Asternote Package
+
+This package can output annotation symbols enclosed in square brackets and marked with an asterisk.
+
+
+## System Requirements
+
++ TeX format: LaTeX2e
++ TeX engine: pTeX, upTeX
+
+Since the unit zw is used, it can be used only in the pTeX series.
+
+
+## Installation
+
+Move asternote.sty file to $TEXMF/tex/latex/asternote.
+
+
+## Usage
+
+### \setasternotenoindent \setasternoteindent
+
+Determines whether or not the annotation symbol is indented at the beginning of a paragraph. The default is \setasternotenoindent. Whether parentheses are considered half-width or full-width is different between text and superscript.
+
+
+### \setasternotetext \setasternotesuperscript
+
+Decide whether the annotation symbols are written in the same size as the body text or in superscript. The default is \setasternotesuperscript.
+
+
+### \setasterreftext \setasterrefsuperscript
+
+Decide whether the annotation reference are written in the same size as the body text or in superscript. The default is \setasterreftext.
+
+
+### \setasternumbertext \asternumbersetsuperscript
+
+Determines whether the manual annotation symbols are written in the same size as the body text or in superscript. The default is \setasternumbertext.
+
+
+### \asternotereset
+
+Reset the annotation symbol number to 1.
+
+
+### \asternote{<LABEL>} \asternotetext{<LABEL>} \asternotesuperscript{<LABEL>}
+
+Put an annotation symbol. You can manually choose to write the annotation in the same size as the body text or in superscript.
+
+
+### \asterref{<LABEL>} \asterreftext{<LABEL>} \asterrefsuperscript{<LABEL>}
+
+Put an annotation reference. You can manually choose to write the annotation in the same size as the body text or in superscript.
+
+
+### \asternumber{<LABEL>} \asternumbertext{<LABEL>} \asternumbersuperscript{<LABEL>}
+
+Put a manual annotation symbol. You can manually choose to write the annotation in the same size as the body text or in superscript.
+
+
+## License
+
+This package released under [the MIT license](https://ctan.org/license/mit).
+
+
+## Revision History
+
++ Version 1.0 2022-06-28
+ + The first public version.
+
+
+---
+
+Yukoh KUSAKABE (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/asternote/asternote-ja.md b/macros/latex/contrib/asternote/asternote-ja.md
new file mode 100644
index 0000000000..0154cf238f
--- /dev/null
+++ b/macros/latex/contrib/asternote/asternote-ja.md
@@ -0,0 +1,74 @@
+# Asternote パッケージ
+
+このパッケージは,角括弧囲い・アスタリスク付きの注釈記号を出力することができます。
+
+
+## 前提条件
+
++ TeX format: LaTeX2e
++ TeX engine: pTeX, upTeX
+
+単位 zw を用いていますので,pTeX 系列でのみ使用できます。
+
+
+## インストール
+
+asternote.sty を $TEXMF/tex/latex/asternote (TeXが見つけられる場所)に置いてください。
+
+
+## 使用方法
+
+### \setasternotenoindent \setasternoteindent
+
+注釈記号に対して,段落初めの字下げをする否かを決めます。既定は \setasternotenoindent です。text と superscript で括弧を半角とみなすか全角とみなすかが異なります。
+
+
+### \setasternotetext \setasternotesuperscript
+
+注釈記号に対して,本文と同じ大きさで書かれるか上付き文字で書かれるかを決めます。既定は \setasternotesuperscript です。
+
+
+### \setasterreftext \setasterrefsuperscript
+
+注釈参照に対して,本文と同じ大きさで書かれるか上付き文字で書かれるかを決めます。既定は \setasterreftext です。
+
+
+### \setasternumbertext \asternumbersetsuperscript
+
+手動の注釈記号に対して,本文と同じ大きさで書かれるか上付き文字で書かれるかを決めます。既定は \setasternumbertext です。
+
+
+### \asternotereset
+
+注釈記号の番号を 1 に戻します。
+
+
+### \asternote{<LABEL>} \asternotetext{<LABEL>} \asternotesuperscript{<LABEL>}
+
+注釈記号を置きます。本文と同じ大きさで書くこと,上付き文字で書くことを手動で指定することができます。
+
+
+### \asterref{<LABEL>} \asterreftext{<LABEL>} \asterrefsuperscript{<LABEL>}
+
+注釈参照を置きます。本文と同じ大きさで書くこと,上付き文字で書くことを手動で指定することができます。
+
+
+### \asternumber{<LABEL>} \asternumbertext{<LABEL>} \asternumbersuperscript{<LABEL>}
+
+手動の注釈記号を置きます。本文と同じ大きさで書くこと,上付き文字で書くことを手動で指定することができます。
+
+
+## ライセンス
+
+このパッケージは[MITライセンス](https://ctan.org/license/mit)のもとで配布しています。
+
+
+## 更新履歴
+
++ Version 1.0 2022-06-28
+ + The first public version.
+
+
+---
+
+Yukoh KUSAKABE (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/asternote/asternote.sty b/macros/latex/contrib/asternote/asternote.sty
new file mode 100644
index 0000000000..bd6639f7ed
--- /dev/null
+++ b/macros/latex/contrib/asternote/asternote.sty
@@ -0,0 +1,143 @@
+%%
+%% asternote.sty
+%%
+%% Copyright (C) 2022 Yukoh KUSAKABE (screen-name)
+%% https://www.metaphysica.info/
+%% https://twitter.com/metaphysicainfo
+%%
+%% This package released under
+%% [the MIT license](https://ctan.org/license/mit).
+%%
+%
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{asternote}[2022/06/28 v1.0]
+%
+%% \@astnt@noindent@switch
+\newif\if@astnt@noindent@switch
+\@astnt@noindent@switchtrue
+%
+%% \setasternotenoindent
+%% \setasternoteindent
+\DeclareRobustCommand{\setasternotenoindent}{\@astnt@noindent@switchtrue}
+\DeclareRobustCommand{\setasternoteindent}{\@astnt@noindent@switchfalse}
+%
+%% \@astnt@notesuperscript@switch
+\newif\if@astnt@notesuperscript@switch
+\@astnt@notesuperscript@switchtrue
+%
+%% \setasternotetext
+%% \setasternotesuperscript
+\DeclareRobustCommand{\setasternotetext}{\@astnt@notesuperscript@switchfalse}
+\DeclareRobustCommand{\setasternotesuperscript}{\@astnt@notesuperscript@switchtrue}
+%
+%% \@astnt@refsuperscriptswitch
+\newif\if@astnt@refsuperscript@switch
+\@astnt@refsuperscript@switchfalse
+%
+%% \setasterreftext
+%% \setasterrefsuperscript
+\DeclareRobustCommand{\setasterreftext}{\@astnt@refsuperscript@switchfalse}
+\DeclareRobustCommand{\setasterrefsuperscript}{\@astnt@refsuperscript@switchtrue}
+%
+%% \@astnt@numbersuperscriptswitch
+\newif\if@astnt@numbersuperscript@switch
+\@astnt@numbersuperscript@switchfalse
+%
+%% \setasternumbertext
+%% \asternumbersetsuperscript
+\DeclareRobustCommand{\setasternumbertext}{\@astnt@numbersuperscript@switchfalse}
+\DeclareRobustCommand{\asternumbersetsuperscript}{\@astnt@numbersuperscript@switchtrue}
+%
+%% asternotecounter
+\newcounter{asternotecounter}
+\setcounter{asternotecounter}{0}
+%
+%% \asternotereset
+\DeclareRobustCommand{\asternotereset}{\setcounter{asternotecounter}{0}}
+%
+%% \asternotetext{<LABEL>}
+%% \asternotesuperscript{<LABEL>}
+\DeclareRobustCommand{\asternotetext}[1]{\refstepcounter{asternotecounter}\textsf{[*\theasternotecounter ]}\expandafter\label{#1}}
+\DeclareRobustCommand{\asternotesuperscript}[1]{\refstepcounter{asternotecounter}\makebox[2zw]{\@textsuperscript{\scriptsize\!\!\textsf{[*\theasternotecounter ]}}\expandafter\label{#1}}}
+%
+%% \asternote{<LABEL>}
+\DeclareRobustCommand{\asternote}[1]{%
+\if@astnt@notesuperscript@switch
+% when \setasternotesuperscript
+% when \setasternotenoindent
+ \if@astnt@noindent@switch
+ {\noindent\asternotesuperscript{#1}}%
+ \else
+% when \setasternoteindent
+ {\asternotesuperscript{#1}}%
+ \fi
+\else
+% when \asternotetext
+% when \setasternotenoindent
+ \if@astnt@noindent@switch
+ {\noindent\asternotetext{#1}}%
+ \else
+% when \setasternoteindent
+ {\asternotetext{#1}}%
+ \fi
+\fi
+}%
+%
+%% \asterreftext{<LABEL>}
+%% \asterrefsuperscript{<LABEL>}
+\DeclareRobustCommand{\asterreftext}[1]{{\textsf{[*\ref{#1}]}}}
+\DeclareRobustCommand{\asterrefsuperscript}[1]{\@textsuperscript{\scriptsize\!\!\textsf{[*\ref{#1}]}}}
+%
+%% \asterref{<LABEL>}
+\DeclareRobustCommand{\asterref}[1]{%
+\if@astnt@refsuperscript@switch
+% when \setasterrefsuperscript
+% when \setasternotenoindent
+ \if@astnt@noindent@switch
+ {\noindent\asterrefsuperscript{#1}}%
+ \else
+% when \setasternoteindent
+ {\asterrefsuperscript{#1}}%
+ \fi
+\else
+% when \asterreftext
+% when \setasternotenoindent
+ \if@astnt@noindent@switch
+ {\noindent\asterreftext{#1}}%
+ \else
+% when \setasternoteindent
+ {\asterreftext{#1}}%
+ \fi
+\fi
+}%
+%
+%% \asternumbertext{<LABEL>}
+%% \asternumbersuperscript{<LABEL>}
+%
+\DeclareRobustCommand{\asternumbertext}[1]{{\textsf{[*{#1}]}}}
+\DeclareRobustCommand{\asternumbersuperscript}[1]{\@textsuperscript{\scriptsize\!\!\textsf{[*{#1}]}}}
+%
+%% \asternumber{<LABEL>}
+\DeclareRobustCommand{\asternumber}[1]{%
+\if@astnt@numbersuperscript@switch
+% when \setasterrefsuperscript
+% when \setasternotenoindent
+ \if@astnt@noindent@switch
+ {\noindent\asternumbersuperscript{#1}}%
+ \else
+% when \setasternoteindent
+ {\asternumbersuperscript{#1}}%
+ \fi
+\else
+% when \asterreftext
+% when \setasternotenoindent
+ \if@astnt@noindent@switch
+ {\noindent\asternumbertext{#1}}%
+ \else
+% when \setasternoteindent
+ {\asternumbertext{#1}}%
+ \fi
+\fi
+}%
+%
+%% EOF \ No newline at end of file
diff --git a/macros/latex/contrib/asternote/asternote_example.tex b/macros/latex/contrib/asternote/asternote_example.tex
new file mode 100644
index 0000000000..1510541ff2
--- /dev/null
+++ b/macros/latex/contrib/asternote/asternote_example.tex
@@ -0,0 +1,19 @@
+\documentclass[uplatex]{article}
+\usepackage{asternote}
+\begin{document}
+%\setasternoteindent
+
+\asternote{a}a
+
+\asternote{b}b
+
+\asternotereset
+
+\asternote{c}c
+
+\asterref{a}A
+
+\asterref{b}B
+
+\asterref{c}C
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/hideanswer/README.md b/macros/latex/contrib/hideanswer/README.md
new file mode 100644
index 0000000000..4fff4489ae
--- /dev/null
+++ b/macros/latex/contrib/hideanswer/README.md
@@ -0,0 +1,30 @@
+# Hideanswer Package
+
+This package can generate documents with and without answers from a single file by toggling a switch. However, it can only be used to create documents to be printed on paper.
+
+
+## System Requirements
+
++ TeX format: LaTeX
++ Prerequisite package: color and graphicx
+
+
+## Installation
+
+Move hideanswer.sty file to $TEXMF/tex/latex/hideanswer.
+
+
+## License
+
+This package released under [the MIT license](https://ctan.org/license/mit).
+
+
+## Revision History
+
++ Version 1.0 2022-06-28
+ + The first public version.
+
+
+---
+
+[Yukoh KUSAKABE](https://twitter.com/metaphysicainfo) (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/hideanswer/hideanswer-en.md b/macros/latex/contrib/hideanswer/hideanswer-en.md
new file mode 100644
index 0000000000..0f165a079c
--- /dev/null
+++ b/macros/latex/contrib/hideanswer/hideanswer-en.md
@@ -0,0 +1,77 @@
+# Hideanswer Package 1.0
+
+This package can generate documents with and without answers from a single file by toggling a switch. However, it can only be used to create documents to be printed on paper.
+
+
+## System Requirements
+
++ TeX format: LaTeX
++ Prerequisite package: color and graphicx
+
+
+## Installation
+
+Move hideanswer.sty file to $TEXMF/tex/latex/hideanswer.
+
+
+## Usage
+
+### \sethideanswer
+
+After this command, the answer is hidden. Usually, this instruction is used to switch the generation of question and answer sheets, depending on whether or not this instruction is written at the beginning of the document.
+
+
+### \unsethideanswer
+
+After this command, the answer appears.
+
+
+### \hideanswer{<text>}
+
+<text> is hidden. In \hideanswer*{<text>}, the hidden and visible parts are reversed.
+
+
+### environment hideanswerdiv
+
+The written part inside the environment is hidden. It may be used to hide long answers. In hideanswerdiv*, the hidden and visible parts are reversed.
+
+
+### \smashanswer{<text>}
+
+<text> is hidden and the next sentence is placed as if it were not there. In \smashanswer*{<text>}, the hidden and visible parts are reversed.
+
+
+### environment smashanswerdiv
+
+The written part inside the environment is hidden and the next sentence is placed as if it were not there. It may be used to hide long answers. In smashanswerdiv*, the hidden and visible parts are reversed.
+
+
+### \hidegraphics[<includegraphics option>]{<file>}
+
+The graphic is hidden. The options are the same as for \includegraphics since \includegraphics is loaded internally. In \hidegraphics*[<includegraphics option>]{<file>}, the hidden and visible parts are reversed.
+
+
+### \smashraphics[<includegraphics option>]{<file>}
+
+The graphic is hidden and the next sentence is placed as if it were not there. The options are the same as for \includegraphics since \includegraphics is loaded internally. In \hidegraphics*[<includegraphics option>]{<file>}, the hidden and visible parts are reversed.
+
+
+### \switchanswer{<text when sethide>}{<text when unsethide>}
+
+Switching between hidden and visible sentences. Since \switchanswer does not remember the length of the sentence, the position of the next sentence moves. In \switchanswer*{<text when unsethide>}{<text when sethide>}, the hidden and visible parts are reversed.
+
+
+## License
+
+This package released under [the MIT license](https://ctan.org/license/mit).
+
+
+## Revision History
+
++ Version 1.0 2022-06-28
+ + The first public version.
+
+
+---
+
+Yukoh KUSAKABE (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/hideanswer/hideanswer-ja.md b/macros/latex/contrib/hideanswer/hideanswer-ja.md
new file mode 100644
index 0000000000..3de48be8ca
--- /dev/null
+++ b/macros/latex/contrib/hideanswer/hideanswer-ja.md
@@ -0,0 +1,79 @@
+# Hideanswer パッケージ
+
+このパッケージは,スイッチ切り替えによって単一のファイルから答えが書かれている文書と答えが書かれていない文書を生成することができます。ただし,紙に印刷する文書を作成するときにしか使えません。
+
+
+## 前提条件
+
++ TeX format: LaTeX
++ Prerequisite package: color and graphicx
+
+
+## インストール
+
+hideanswer.sty を $TEXMF/tex/latex/hideanswer (TeXが見つけられる場所)に置いてください。
+
+
+## 使用方法
+
+### \sethideanswer
+
+この命令以降では答えが隠されます。ふつう,文書の最初にこの命令を書くか否かで問題用紙と解答用紙の生成を切り替えるために使います。
+
+
+### \unsethideanswer
+
+この命令以降では答えが現れます。
+
+
+### \hideanswer{<text>}
+
+<text> と書かれた部分が隠されます。\hideanswer*{<text>} では,隠されるときと現れるときが逆になります。
+
+
+### hideanswerdiv 環境
+
+環境の内側に書かれた部分が隠されます。長い答えを隠すために用いるとよいでしょう。
+hideanswerdiv* では,隠されるときと現れるときが逆になります。
+
+
+### \smashanswer{<text>}
+
+<text> と書かれた部分が隠され,それがないかのように次の文が置かれます。\smashanswer*{<text>} では,隠されるときと現れるときが逆になります。
+
+
+### smashanswerdiv 環境
+
+環境の内側に書かれた部分が隠され,それがないかのように次の文が置かれます。長い答えを隠すために用いるとよいでしょう。
+smashanswerdiv* では,隠されるときと現れるときが逆になります。
+
+
+### \hidegraphics[<includegraphics option>]{<file>}
+
+読み込んだ画像が隠されます。\includegraphics を内部で読み込みますので,オプションは \includegraphics のものと同様です。\hidegraphics*[<includegraphics option>]{<file>} では,隠されるときと現れるときが逆になります。
+
+
+### \smashraphics[<includegraphics option>]{<file>}
+
+読み込んだ画像が隠され,それがないかのように次の文が置かれます。\includegraphics を内部で読み込みますので,オプションは \includegraphics のものと同様です。\smashraphics*[<includegraphics option>]{<file>} では,隠されるときと現れるときが逆になります。
+
+
+### \switchanswer{<text when sethide>}{<text when unsethide>}
+
+隠されているときと現れているときで文章を切り替えます。\switchanswer は文章の長さを覚えませんから,次の文の位置が動きます。\switchanswer*{<text when unsethide>}{<text when sethide>} では,隠されるときと現れるときが逆になります。
+
+
+## ライセンス
+
+このパッケージは[MITライセンス](https://ctan.org/license/mit)のもとで配布しています。
+
+
+## 更新履歴
+
++ Version 1.0 2022-06-28
+ + The first public version.
+
+
+---
+
+Yukoh KUSAKABE (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/hideanswer/hideanswer.sty b/macros/latex/contrib/hideanswer/hideanswer.sty
new file mode 100644
index 0000000000..25a6264b50
--- /dev/null
+++ b/macros/latex/contrib/hideanswer/hideanswer.sty
@@ -0,0 +1,76 @@
+%%
+%% hideanswer.sty
+%%
+%% Copyright (C) 2022 Yukoh KUSAKABE (screen-name)
+%% https://www.metaphysica.info/
+%% https://twitter.com/metaphysicainfo
+%%
+%% This package released under
+%% [the MIT license](https://ctan.org/license/mit).
+%%
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{hideanswer}[2022/06/28 v1.0]
+%
+%% for \color
+\RequirePackage{color}
+%
+% for \NewDocumentEnvironment
+\RequirePackage{xparse}
+%
+%% \if@hdans@hideswitch
+\newif\if@hdans@hideswitch
+\@hdans@hideswitchfalse
+%
+%% \sethideanswer
+%% \unsethideanswer
+\DeclareRobustCommand{\sethideanswer}{\@hdans@hideswitchtrue}
+\DeclareRobustCommand{\unsethideanswer}{\@hdans@hideswitchfalse}
+%
+%% \hideanswer{<text>}
+%% \hideanswer*{<text>}
+\DeclareRobustCommand{\hideanswer}{\@ifstar{\@hdans@hideanswer@star}{\@hdans@hideanswerh@nostar}}
+\DeclareRobustCommand{\@hdans@hideanswer@star}[1]{\if@hdans@hideswitch\else\color{white}\fi{#1}\if@hdans@hideswitch\else\color{black}\fi}
+\DeclareRobustCommand{\@hdans@hideanswerh@nostar}[1]{\if@hdans@hideswitch\color{white}\else\fi{#1}\if@hdans@hideswitch\color{black}\else\fi}
+%
+%% \begin{hideanswerdiv}
+%% \begin{hideanswerdiv*}
+\newenvironment{hideanswerdiv}%
+{\if@hdans@hideswitch\color{white}\else\fi}%
+{\if@hdans@hideswitch\color{black}\else\fi}
+\newenvironment{hideanswerdiv*}%
+{\if@hdans@hideswitch\else\color{white}\fi}%
+{\if@hdans@hideswitch\else\color{black}\fi}
+%
+%% \smashanswer{<text>}
+%% \smashanswer*{<text>}
+\DeclareRobustCommand{\smashanswer}{\@ifstar{\@hdans@smashanswer@star}{\@hdans@smashanswer@nostar}}
+\DeclareRobustCommand{\@hdans@smashanswer@star}[1]{\if@hdans@hideswitch{#1}\else\fi}
+\DeclareRobustCommand{\@hdans@smashanswer@nostar}[1]{\if@hdans@hideswitch\else{#1}\fi}
+%
+%% \begin{smashanswerdiv}
+%% \begin{smashanswerdiv*}
+\NewDocumentEnvironment{smashanswerdiv}{+b}
+{\if@hdans@hideswitch\else #1\fi}{}
+\NewDocumentEnvironment{smashanswerdiv*}{+b}
+{\if@hdans@hideswitch #1\else\fi}{}
+%
+%% \hidegraphics[<includegraphics>]{<includegraphics>}
+%% \hidegraphics*[<includegraphics>]{<includegraphics>}
+\DeclareRobustCommand{\hidegraphics}{\@ifstar{\@hdans@hidegraphics@star}{\@hdans@hidegraphics@nostar}}
+\DeclareRobustCommand{\@hdans@hidegraphics@star}[2][]{\if@hdans@hideswitch\includegraphics[#1]{#2}\else\phantom{\includegraphics[#1]{#2}}\fi}
+\DeclareRobustCommand{\@hdans@hidegraphics@nostar}[2][]{\if@hdans@hideswitch\phantom{\includegraphics[#1]{#2}}\else\includegraphics[#1]{#2}\fi}
+%
+%% \smashgraphics[<includegraphics>]{<includegraphics>}
+%% \smashgraphics*[<includegraphics>]{<includegraphics>}
+\DeclareRobustCommand{\smashgraphics}{\@ifstar{\@hdans@smashgraphics@star}{\@hdans@smashgraphics@nostar}}
+\DeclareRobustCommand{\@hdans@smashgraphics@star}[2][]{\if@hdans@hideswitch\includegraphics[#1]{#2}\else\fi}
+\DeclareRobustCommand{\@hdans@smashgraphics@nostar}[2][]{\if@hdans@hideswitch\else\includegraphics[#1]{#2}\fi}
+%
+%% \switchanswer{<text when sethide>}{<text when unsethide>}
+%% \switchanswer*{<text when unsethide>}{<text when sethide>}
+\DeclareRobustCommand{\switchanswer}{\@ifstar{\@hdans@switchanswer@star}{\@hdans@switchanswerh@nostar}}
+\DeclareRobustCommand{\@hdans@switchanswer@star}[2]{\if@hdans@hideswitch{#1}\else{#2}\fi}
+\DeclareRobustCommand{\@hdans@switchanswerh@nostar}[2]{\if@hdans@hideswitch{#2}\else{#1}\fi}
+%
+%% EOF \ No newline at end of file
diff --git a/macros/latex/contrib/hideanswer/hideanswer_example.tex b/macros/latex/contrib/hideanswer/hideanswer_example.tex
new file mode 100644
index 0000000000..5e35031c56
--- /dev/null
+++ b/macros/latex/contrib/hideanswer/hideanswer_example.tex
@@ -0,0 +1,38 @@
+\documentclass[uplatex]{article}
+\usepackage{hideanswer}
+\begin{document}
+\sethideanswer
+\unsethideanswer
+
+A\hideanswer{B}A
+
+C\hideanswer*{D}C
+
+E%
+\begin{hideanswerdiv}
+$$F$$
+\end{hideanswerdiv}%
+E
+
+G%
+\begin{hideanswerdiv*}
+$$H$$
+\end{hideanswerdiv*}%
+G
+
+I\smashanswer{J}I
+
+K\smashanswer*{L}K
+
+M%
+\begin{smashanswerdiv}
+$$N$$
+\end{smashanswerdiv}%
+M
+
+O%
+\begin{smashanswerdiv*}
+$$P$$
+\end{smashanswerdiv*}%
+O
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/inlinelabel/README.md b/macros/latex/contrib/inlinelabel/README.md
new file mode 100644
index 0000000000..e7acb7ca7e
--- /dev/null
+++ b/macros/latex/contrib/inlinelabel/README.md
@@ -0,0 +1,31 @@
+# Inlinelabel Package
+
+This package can assign equation numbers to inline equations. When Japanese is supported, you can switch to circled equation numbers.
+
+
+## System Requirements
+
++ TeX format: LaTeX
++ Prerequisite package: amsmath and refcount
++ Prerequisite package with [circled] option: japanese-otf
+
+
+## Installation
+
+Move inlinelabel.sty file to $TEXMF/tex/latex/hideanswer.
+
+
+## License
+
+This package released under [the MIT license](https://ctan.org/license/mit).
+
+
+## Revision History
+
++ Version 1.0 2022-06-28
+ + The first public version.
+
+
+---
+
+[Yukoh KUSAKABE](https://twitter.com/metaphysicainfo) (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/inlinelabel/inlinelabel-en.md b/macros/latex/contrib/inlinelabel/inlinelabel-en.md
new file mode 100644
index 0000000000..dd726d5533
--- /dev/null
+++ b/macros/latex/contrib/inlinelabel/inlinelabel-en.md
@@ -0,0 +1,55 @@
+# Inlinelabel Package
+
+This package can assign equation numbers to inline equations. When Japanese is supported, you can switch to circled equation numbers.
+
+
+## System Requirements
+
++ TeX format: LaTeX
++ Prerequisite package: amsmath and refcount
++ Prerequisite package with [circled] option: japanese-otf
+
+
+## Installation
+
+Move inlinelabel.sty file to $TEXMF/tex/latex/hideanswer.
+
+
+## Usage
+
+### \inlinelabel{<label>}
+
+Put the inline equation number. Place it outside of the equation (outside of the $--$). Take the name of the label as an argument. Take a small margin before and after the text to make it look natural. If you don't want margins, use \inlinelabel*{<label>}.
+
+
+### Option [circled]
+
+Assuming you are using a Japanese environment. Switch to circled equation numbers. All equation numbers are rewritten, not just the inline equation numbers.
+
+
+### \circledref{<label>}
+
+Only valid when [circled] option is loaded.
+Refer to the circled equation number.
+
+
+### \equationref{<label>}
+
+Only valid when [circled] option is loaded.
+This macro is the same as \circledref{<label>}.
+
+
+## License
+
+This package released under [the MIT license](https://ctan.org/license/mit).
+
+
+## Revision History
+
++ Version 1.0 2022-06-28
+ + The first public version.
+
+
+---
+
+[Yukoh KUSAKABE](https://twitter.com/metaphysicainfo) (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/inlinelabel/inlinelabel-ja.md b/macros/latex/contrib/inlinelabel/inlinelabel-ja.md
new file mode 100644
index 0000000000..a0e14fe403
--- /dev/null
+++ b/macros/latex/contrib/inlinelabel/inlinelabel-ja.md
@@ -0,0 +1,55 @@
+# Inlinelabel パッケージ
+
+このパッケージは,インライン数式に数式番号を振ることができます。また,日本語を扱えるときには,丸で囲まれた数式番号に切り替えることができます。
+
+
+## 前提条件
+
++ TeX format: LaTeX
++ Prerequisite package: amsmath and refcount
++ Prerequisite package with [circled] option: japanese-otf
+
+
+## インストール
+
+inlinelabel.sty を $TEXMF/tex/latex/hideanswer (TeXが見つけられる場所)に置いてください。
+
+
+## 使用方法
+
+### \inlinelabel{<label>}
+
+インラインの数式番号を置きます。数式の外($--$の外)に置いてください。引数にラベルの名前を取ります。文章を自然に見せるために,前後に少しの余白を取ります。余白がいらないときは,\inlinelabel*{<label>} を使ってください。
+
+
+### Option [circled]
+
+あなたが日本語の環境を使用していることを前提とします。丸で囲まれた数式番号に切り替えます。インラインの数式番号だけでなく,すべての数式番号が書き換えられます。
+
+
+### \circledref{<label>}
+
+[circled] オプションを読み込んでいるときにのみ有効です。
+丸で囲まれた数式番号を参照します。
+
+
+### \equationref{<label>}
+
+[circled] オプションを読み込んでいるときにのみ有効です。
+\circledref{<label>} と同じです。
+
+
+## ライセンス
+
+このパッケージは[MITライセンス](https://ctan.org/license/mit)のもとで配布しています。
+
+
+## 更新履歴
+
++ Version 1.0 2022-06-28
+ + The first public version.
+
+
+---
+
+[Yukoh KUSAKABE](https://twitter.com/metaphysicainfo) (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/inlinelabel/inlinelabel.sty b/macros/latex/contrib/inlinelabel/inlinelabel.sty
new file mode 100644
index 0000000000..93c4822c83
--- /dev/null
+++ b/macros/latex/contrib/inlinelabel/inlinelabel.sty
@@ -0,0 +1,55 @@
+%%
+%% inlinelabel.sty
+%%
+%% Copyright (C) 2022 Yukoh KUSAKABE (screen-name)
+%% https://www.metaphysica.info/
+%% https://twitter.com/metaphysicainfo
+%%
+%% This package released under
+%% [the MIT license](https://ctan.org/license/mit).
+%%
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{inlinelabel}[2022/06/28 v1.0]
+%
+% When you meet ''Package pxufont Error: You must load this package
+% after 'otf'.'', move \usepackage{otf} to a forward row.
+%
+%% \if@inlinelabel@circled
+\newif\if@inlinelabel@circled
+\@inlinelabel@circledfalse
+%
+%% [circled]
+\DeclareOption{circled}{\@inlinelabel@circledtrue}
+%
+\ExecuteOptions{}
+\ProcessOptions\relax
+%
+% for \tagform@ \maketag@@@
+\RequirePackage{amsmath}
+%
+%% When [circled]
+\if@inlinelabel@circled
+%
+% for \ajMaru
+\RequirePackage{otf}
+% for \getrefnumber
+\RequirePackage{refcount}
+%
+% renew tagform
+\def\tagform@#1{\maketag@@@{\ldots\ignorespaces\ajMaru{#1}\unskip\@@italiccorr}}%
+%
+%% \circledref{<label>}
+%% \equationref{<label>}
+\DeclareRobustCommand{\circledref}[1]{\mbox{\ajMaru{\getrefnumber{#1}}}}
+\DeclareRobustCommand{\equationref}[1]{\mbox{\ajMaru{\getrefnumber{#1}}}}
+%
+\fi
+%%
+%
+%% \inlinelabel{<label>}
+\DeclareRobustCommand{\inlinelabel}{\@ifstar{\@inlinelabelstar}{\@inlinelabelnostar}}
+\DeclareRobustCommand{\@inlinelabelstar}[1]{\refstepcounter{equation}\tagform@\theequation\expandafter\label{#1}}
+\DeclareRobustCommand{\@inlinelabelnostar}[1]{\hspace{0.5em}\refstepcounter{equation}\tagform@\theequation\expandafter\label{#1}\hspace{0.5em}}
+%
+%% EOF \ No newline at end of file
diff --git a/macros/latex/contrib/inlinelabel/inlinelabel_example.tex b/macros/latex/contrib/inlinelabel/inlinelabel_example.tex
new file mode 100644
index 0000000000..bf70bcaf82
--- /dev/null
+++ b/macros/latex/contrib/inlinelabel/inlinelabel_example.tex
@@ -0,0 +1,11 @@
+\documentclass[uplatex]{article}
+\usepackage{inlinelabel}
+\begin{document}
+$1=2$\inlinelabel{a}
+
+$1=2$\inlinelabel*{b}
+
+\ref{a}
+
+\ref{b}
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/jpnedumathsymbols/README.md b/macros/latex/contrib/jpnedumathsymbols/README.md
new file mode 100644
index 0000000000..d2455ef6b1
--- /dev/null
+++ b/macros/latex/contrib/jpnedumathsymbols/README.md
@@ -0,0 +1,44 @@
+# Jpnedumathsymbols Package
+
+Mathematical equation representation in Japanese education differs somewhat from the standard LaTeX writing style. This package introduces mathematical equation representation in Japanese education.
+
+
+## System Requirements
+
+**This package use Japanese letters.**
+
++ TeX format: LaTeX
++ Prerequisite package: amsmath, amssymb, empheq and xparse
++ Prerequisite package without [nonocurriculum]: japanese-otf
+
+
+## Installation
+
+Move jpnedumathsymbols.sty file to $TEXMF/tex/latex/jpnedumathsymbols.
+
+
+## Achknowledgements
+
+\neconcave, \seconcave, \seconvex and \neconvex are by [Prof. Kouji KODAMA](http://www.math.kobe-u.ac.jp/HOME/kodama/tips-latex-bend-arrow.html) and is released under the GNU/GPL license. I would like to thank him.
+
+\arc is by [Prof. Shingo SAITO](http://www.artsci.kyushu-u.ac.jp/~ssaito/jpn/tex/tips/misc.html#arc). I would like to thank him.
+
+\parallel is by [Mr./Ms. Ohishi]https://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/8814.html). I would like to thank him/her.
+
+This package is inspired by [emath package by Kazuhiro Okuma (a.k.a. tDB)](http://emath.s40.xrea.com/). I would like to thank him.
+
+
+## License
+
+This package released under [GNU GPL v3 or newer](http://www.gnu.org/licenses/gpl-3.0.html).
+
+
+## Revision History
+
++ Version 1.0 2022-06-29
+ + The first public version.
+
+
+---
+
+[Yukoh KUSAKABE](https://twitter.com/metaphysicainfo) (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols-en.md b/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols-en.md
new file mode 100644
index 0000000000..57e067ea53
--- /dev/null
+++ b/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols-en.md
@@ -0,0 +1,317 @@
+# Jpnedumathsymbols Package
+
+Mathematical equation representation in Japanese education differs somewhat from the standard LaTeX writing style. This package introduces mathematical equation representation in Japanese education.
+
+
+## System Requirements
+
+**This package use Japanese letters.**
+
++ TeX format: LaTeX
++ Prerequisite package: amsmath, amssymb, empheq and xparse
++ Prerequisite package without [nonocurriculum]: japanese-otf
+
+
+## Installation
+
+Move jpnedumathsymbols.sty file to $TEXMF/tex/latex/jpnedumathsymbols.
+
+
+## Usage
+
+### \frac \sqrt \lim \vec
+
+When the package is loaded, the symbols for fractions, root signs, limits, and vectors are automatically changed. If you do not need that, please specify the options, [nofrac], [nosqrt], [nolim], and [novec]. The original symbol is saved with the name "original" (\originalfrac, \originalsqrt, \originallim and \originalvec).
+
+
+### Roman Typeface Meaning Point
+
+It is customary to use the Roman font to denote points. To make typing easier, the same letter can be typed twice in succession to form a roman letter. For example, \AA will form the Roman letter A. Any conflicts with the original command are renamed (original \AA is \angstrom, original \SS is \capitaleszett). If you do not need that, please specify the option [nopointroman].
+
+
+### Letters for Curriculum
+
+Sometimes it is more convenient for characters used in the curriculum to be full-width characters. They are in the form \curr--. If you do not need that, please specify the option [nocurriculum] (see system requirements).
+
++ Full-width Roman numeral \currI, \currII, \currIII
++ Full-width capital letters \currA -- \currZ
++ Full-width lowercase letters \curra -- \currz
++ Full-width lowercase Greek letters \curralpha -- \curromega
++ Concurrent courses of study \currIA, \currIIB, \currIIBC, \currIIIC
++ Concurrent courses of study with "+" \currIA*, \currIIB*, \currIIBC*, \currIIIC*
+
+
+### \phantomheight[<letter>]
+
+Places a post to enclose the box. If no optional argument is taken, \frac{1}{2} is entered.
+
+
+### \comma \period
+
+Punctuation marks and reading marks are used in mathematical equations. \comma* and \period* are with margin.
+
+
+### \pair{}{} \triplet{}{}{} \quadruplet*{}{}{}
+
+Order pairs. \pair* \triplet* \quadruplet* fix the size of the parentheses.
+
+
+### \intersection \union
+
+Another name for \cap and \cup.
+
+
+### \complement{} \cmpl{}
+
+This is a overline with height matching, even with small letters. \cmpl is another name for \complement.
+
+
+### \tand \tor
+
+The Japanese "and" and "or" used in mathematical equations.
+
+
+### \eand \eor
+
+The English "and" and "or" used in mathematical equations.
+
+
+### \lto \lfrom \iff
+
+Another name for \Longrightarrow, \Longleftarrow and \Longleftrightarrow. It is treated as a \mathrels.
+
+
+### \plto \plfrom \piff
+
+Invisible \lto/\lfrom/\iff used for immediate line breaks in an align environment. The "p" is named after phantom.
+
+
+### \peq
+
+Invisible equal sign used for immediate line breaks in an align environment. The "p" is named after phantom.
+
+
+### \set{}{}
+
+This is an inclusive notation for a set. The delimiter is a vertical bar, which changes to a colon when the option [setcolon] is loaded.
+
+
+### \N \NZ \NP \Z \Q \R \C
+
+The symbols for whole natural numbers, whole integers greater than or equal to 0, whole integers greater than or equal to 1, whole integers, whole rational numbers, whole real numbers, and whole complex numbers. When the option [mathbb] is loaded, it changes to blackboard bold.
+
+
+### \inverse{<function>}
+
+The symbol of inverse function.
+
+
+### \abs{} \abs*{}
+
+Absolute value. \abs* fixes the size.
+
+
+### environment ecases
+
+\begin{ecases}[align(*)/gather(*)]{<left side>}
+
+Case classification. This is an input support for the empheq environment. Default is align*.
+
+
+### environment simul
+
+\begin{simul}{align(*)/gather(*)}
+
+Simultaneous equations. This is an input support for the empheq environment. Default is gather*.
+
+
+### environment signchart
+
+\begin{signchart}{<columns>}
+
+Table of increase/decrease. It takes the number of columns excluding headings as arguments. The internal environment is an array environment, so you write using & \\ \hline etc.
+
+
+### \neconcave \seconcave \seconvex \neconvex
+
+
+Arrows are used in the increase/decrease table.
+
+This code is by [Prof. Kouji KODAMA](http://www.math.kobe-u.ac.jp/HOME/kodama/tips-latex-bend-arrow.html) and is released under the GNU/GPL license. I would like to thank him.
+
+
+### \dint
+
+The symbol of integral which is always in display style.
+
+
+### \dr \ds \dt \du \dx \dy \dz \dtheta
+
+Integral variables.
+
+
+### \const
+
+Integral constant as "const.".
+
+
+### \defint{<from>}{<to>}{<function>}
+
+The function before the assignment of the definite integral.
+
+
+### \transformvariable{<variable1>}{<from1>}{<to1>}{variable2}{<from2>}{<to2>}
+
+Variable transformation of a definite integral.
+
+
+### \rvec{}{} \rvec*{}{}{}
+
+2-dimensional horizontal vector. Asterisked one is 3-dimensional horizontal vectors. When option [rvecbracket] is loaded, they are replaced by square brackets.
+
+
+### \cvec{}{} \cvec*{}{}{}
+
+2-dimensional vertical vector. Asterisked one is 3-dimensional vertical vectors. When option [cvecbracket] is loaded, they are replaced by square brackets.
+
+
+### \innerproduct{}{} {}{}
+
+Inner product of vectors. When option [innerproductbracket] is loaded, it is replaced by bracket notation. \inp is another name for \innerproduct.
+
+
+### \sequence{} \seq{}
+
+Mathematical sequence. \seq is another name for \sequence.
+
+
+### \sum*
+
+\sum which is text style even in display mode.
+
+
+### \GCD \LCM
+
+The symbol of greatest common divisor and the symbol of least common multiple.
+
+
+### \degree
+
+The symbol of degree.
+
+
+### \arc{}
+
+The symbol of arc.
+
+This code is by [Prof. Shingo SAITO](http://www.artsci.kyushu-u.ac.jp/~ssaito/jpn/tex/tips/misc.html#arc). I would like to thank him.
+
+
+### \parallel
+
+The symbol of parallel. The original symbol is stored in \originalparallel.
+
+This code is by [Mr./Ms. Ohishi]https://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/8814.html). I would like to thank him/her.
+
+
+### \similar
+
+The symbol of similar.
+
+
+### \permutation{}{} \combination{}{} \repeatedpermutation{}{} \repeatedcombination{}{} \homogeneous{}{}
+
+The symbols for permutations, combinations, repeated permutations, and repeated combinations. \homogeneous is another name for \repeatedcombination.
+
+
+### \expectedvalue{}
+
+The symbols for expected value. When the option [mathbb] is loaded, it changes to blackboard bold.
+
+
+### \Re \Im
+
+The symbol of real axis and imaginary axis. The original symbol is stored in \originalRe and \originalIm.
+
+
+### \conjugate{}
+### \conj{}
+
+Complex conjugate. \conj is another name for \conjugate.
+
+
+### \parentext{<text>} \squaretext{<text>} \whitesquaretext{<text>}
+
+Sentences with round brackets, sentences with square brackets, and sentences with white square brackets.
+
+
+### \ltext{<text>} \lltext{<text>}
+
+Sentences with square brackets and sentences with white square brackets.
+
+
+### \ltextbegin \lltextbegin \ltextend \lltextend
+
+Opening square bracket, opening white square bracket, closing square bracket, and closing white square bracket. They are used when there is a line break in the middle of a sentence.
+
+
+### \nomination{}
+
+Parentheses for using a word or phrase in an equation.
+
+
+### \condition{}
+
+Parentheses are used to divide cases. \condition*{} is preceded by a space.
+
+
+### \explanation{}
+
+Parentheses used to explain an expression, preceded by \because. \explanation*{} is not preceded by \because.
+
+
+### \quantify
+
+Text box for mentioning quantization in the middle of an expression.
+
+
+### \equationunit
+
+Parentheses for writing units in expressions.
+
+
+### \texttherefore \textbecause
+
+\therefore and \because adjusted for use in the text.
+
+
+### \QED
+
+Full-width halmos symbol.
+
+
+## Achknowledgements
+
+\neconcave, \seconcave, \seconvex and \neconvex are by [Prof. Kouji KODAMA](http://www.math.kobe-u.ac.jp/HOME/kodama/tips-latex-bend-arrow.html) and is released under the GNU/GPL license. I would like to thank him.
+
+\arc is by [Prof. Shingo SAITO](http://www.artsci.kyushu-u.ac.jp/~ssaito/jpn/tex/tips/misc.html#arc). I would like to thank him.
+
+\parallel is by [Mr./Ms. Ohishi]https://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/8814.html). I would like to thank him/her.
+
+This package is inspired by [emath package by Kazuhiro Okuma (a.k.a. tDB)](http://emath.s40.xrea.com/). I would like to thank him.
+
+
+## License
+
+This package released under [GNU GPL v3 or newer](http://www.gnu.org/licenses/gpl-3.0.html).
+
+
+## Revision History
+
++ Version 1.0 2022-06-29
+ + The first public version.
+
+
+---
+
+[Yukoh KUSAKABE](https://twitter.com/metaphysicainfo) (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols-ja.md b/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols-ja.md
new file mode 100644
index 0000000000..78e4477ac2
--- /dev/null
+++ b/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols-ja.md
@@ -0,0 +1,316 @@
+# Jpnedumathsymbols パッケージ
+
+日本の教育における数式表現には,LaTeX の標準である書きかたとはやや異なる部分があります。このパッケージでは,日本の教育における数式表現を導入します。
+
+
+## 前提条件
+
+**This package use Japanese letters.**
+
++ TeX format: LaTeX
++ Prerequisite package: amsmath, amssymb, empheq and xparse
++ Prerequisite package without [nonocurriculum]: japanese-otf
+
+
+## インストール
+
+jpnedumathsymbols.sty を $TEXMF/tex/latex/jpnedumathsymbols (TeXが見つけられる場所)に置いてください。
+
+
+## 使用方法
+
+### \frac \sqrt \lim \vec
+
+パッケージを読み込むと自動的に分数・根号・極限・ベクトルの記号が変更されます。それが不要なときはオプション [nofrac] [nosqrt] [nolim] [novec] を指定してください。もとの記号は original がついた名前で保存されています(\originalfrac \originalsqrt \originallim \originalvec)。
+
+
+### Roman Typeface Meaning Point
+
+点を表すためにローマン体を用いる慣例があります。入力を楽にするために,同じ文字を2つ続けて打つとローマン体になります。たとえば,\AA でローマン体の A になります。元の命令と重なるものは名前を付け替えています(元の \AA は \angstrom,元の \SS は \capitaleszett です)。それが不要なときはオプション [nopointroman] を指定してください。
+
+
+### Letters for Curriculum
+
+カリキュラムで使われる文字は全角文字であるほうが便利なことがあります。それらは \curr-- という形の命令になっています。それが不要なときはオプション [nocurriculum] を指定してください。
+
++ 全角ローマ数字 \currI, \currII, \currIII
++ 全角英字大文字 \currA -- \currZ
++ 全角英字小文字 \curra -- \currz
++ 全角ギリシア文字小文字 \curralpha -- \curromega
++ 並行カリキュラムのセット \currIA, \currIIB, \currIIBC, \currIIIC
++ 並行カリキュラムのセット(+つき) \currIA*, \currIIB*, \currIIBC*, \currIIIC*
+
+
+### \phantomheight[<letter>]
+
+枠で囲うための支柱を立てます。オプション引数を取らなければ \frac{1}{2} が入ります。
+
+
+### \comma \period
+
+数式中で用いる句点と読点です。アスタリスクをつけると前に余白が付きます。
+
+
+### \pair{}{} \triplet{}{}{} \quadruplet*{}{}{}
+
+順序対です。アスタリスクをつけると括弧の大きさが固定されます。
+
+
+### \intersection \union
+
+\cap と \cup の別名です。
+
+
+### \complement{} \cmpl{}
+
+小さな文字を入れても高さが揃う上線です。\cmpl は \complement の別名です。
+
+
+### \tand \tor
+
+数式中で用いる日本語の「かつ」と「または」です。
+
+
+### \eand \eor
+
+数式中で用いる英語の「and」と「or」です。
+
+
+### \lto \lfrom \iff
+
+\Longrightarrow \Longlrftarrow \Longleftrightarrow の別名です。\mathrel として扱われます。
+
+
+### \plto \plfrom \piff
+
+align 環境で直ちに改行するときに用いる見えない \lto \lfrom \iff です。「p」 は phantom が由来です。
+
+
+### \peq
+
+align 環境で直ちに改行するときに用いる見えない等号です。「p」 は phantom が由来です。
+
+
+### \set{}{}
+
+集合の内包的記法です。区切りは縦棒ですが,[setcolon] オプションを読み込むとコロンに変わります。
+
+
+### \N \NZ \NP \Z \Q \R \C
+
+自然数全体,0以上の整数全体,1以上の整数全体,整数全体,有理数全体,実数全体,複素数全体の記号です。[mathbb] オプションを読み込むと黒板太字に変わります。
+
+
+### \inverse{<function>}
+
+逆関数の記号です。
+
+
+### \abs{} \abs*{}
+
+絶対値です。アスタリスクをつけると大きさが固定されます。
+
+
+### ecases 環境
+
+\begin{ecases}[align(*)/gather(*)]{<left side>}
+
+場合分けです。empheq環境の入力支援です。既定は align* です。
+
+
+### simul 環境
+
+\begin{simul}{align(*)/gather(*)}
+
+連立方程式です。empheq環境の入力支援です。既定は gather* です。
+
+
+### signchart 環境
+
+\begin{signchart}{<columns>}
+
+増減表です。見出しを除いた列数を引数に取ります。内部は array 環境ですので & \\ \hline などを用いて書きます。
+
+
+### \neconcave \seconcave \seconvex \neconvex
+
+増減表で使う矢印です。
+
+このコードは[児玉宏児氏](http://www.math.kobe-u.ac.jp/HOME/kodama/tips-latex-bend-arrow.html)によるもので,GNU/GPLライセンスで公開なさっています。お礼申しあげます。
+
+
+### \dint
+
+常にディスプレイスタイルになる積分記号です。
+
+
+### \dr \ds \dt \du \dx \dy \dz \dtheta
+
+積分変数です。
+
+
+### \const
+
+積分定数を const. と出力します。
+
+
+### \defint{<from>}{<to>}{<function>}
+
+代入前の定積分です。
+
+
+### \transformvariable{<variable1>}{<from1>}{<to1>}{variable2}{<from2>}{<to2>}
+
+定積分の変数変換です。
+
+
+### \rvec{}{} \rvec*{}{}{}
+
+2次元横ベクトルです。アスタリスク付きは3次元横ベクトルです。[rvecbracket] オプションを読み込むと角括弧に置き換えられます。
+
+
+### \cvec{}{} \cvec*{}{}{}
+
+2次元縦ベクトルです。アスタリスク付きは3次元縦ベクトルです。[cvecbracket] オプションを読み込むと角括弧に置き換えられます。
+
+
+### \innerproduct{}{} {}{}
+
+ベクトルの内積です。[innerproductbracket] オプションを読み込むとブラケット記法に置き換えられます。\inp は \innerproduct の別名です。
+
+
+### \sequence{} \seq{}
+
+数列です。\seq は \sequence の別名です。
+
+
+### \sum*
+
+ディスプレイ数式中でもテキストスタイルになる \sum です。
+
+
+### \GCD \LCM
+
+最大公約数と最小公倍数の記号です。
+
+
+### \degree
+
+度の記号です。
+
+
+### \arc{}
+
+弧の記号です。
+
+このコードは[斎藤新悟氏](http://www.artsci.kyushu-u.ac.jp/~ssaito/jpn/tex/tips/misc.html#arc)によるものです。お礼申しあげます。
+
+
+### \parallel
+
+平行の記号です。元の記号は \originalparallel に保存されます。
+
+このコードは[大石氏](https://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/8814.html)によるものです。お礼申しあげます。
+
+
+### \similar
+
+相似の記号です。
+
+
+### \permutation{}{} \combination{}{} \repeatedpermutation{}{} \repeatedcombination{}{} \homogeneous{}{}
+
+順列・組み合わせ・重複順列・重複組み合わせの記号です。\homogeneous は \repeatedcombination の別名です。
+
+
+### \expectedvalue{}
+
+期待値の記号です。[mathbb] オプションを読み込むと黒板太字に変わります。
+
+
+### \Re \Im
+
+実軸・虚軸の記号です。元の記号は \originalRe \originalIm に保存されます。
+
+
+### \conjugate{}
+### \conj{}
+
+複素共役です。\conj は \conjugate の別名です。
+
+
+### \parentext{<text>} \squaretext{<text>} \whitesquaretext{<text>}
+
+丸括弧付き文章,鉤括弧付き文章,白抜き鉤括弧付き文章です。
+
+
+### \ltext{<text>} \lltext{<text>}
+
+鉤括弧付き文章,白抜き鉤括弧付き文章です。
+
+
+### \ltextbegin \lltextbegin \ltextend \lltextend
+
+開き鉤括弧,開き白抜き鉤括弧,閉じ鉤括弧,閉じ白抜き鉤括弧です。途中で改行が入るときに用いるとよいでしょう。
+
+
+### \nomination{}
+
+語句を数式に用いるための括弧です。
+
+
+### \condition{}
+
+場合分けに用いるための括弧です。\condition*{} は前に空白を伴います。
+
+
+### \explanation{}
+
+式の説明に用いるための括弧で,前に \because を伴います。\explanation*{} は伴いません。
+
+
+### \quantify
+
+式の途中で量子化について言及するためのテキストボックスです。
+
+
+### \equationunit
+
+式の中で単位を書くための括弧です。
+
+
+### \texttherefore \textbecause
+
+本文中で使うために調整した \therefore と \because です。
+
+
+### \QED
+
+全角幅のハルモス記号です。
+
+
+## Achknowledgements
+
+\neconcave \seconcave \seconvex \neconvex は[児玉宏児氏](http://www.math.kobe-u.ac.jp/HOME/kodama/tips-latex-bend-arrow.html)によるもので,GNU/GPLライセンスで公開なさっています。お礼申しあげます。
+
+\arc は[斎藤新悟氏](http://www.artsci.kyushu-u.ac.jp/~ssaito/jpn/tex/tips/misc.html#arc)によるものです。お礼申しあげます。
+
+\parallel は[大石氏](https://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/8814.html)によるものです。お礼申しあげます。
+
+このパッケージの作成にあたっては,[大熊一弘(tDB)氏によるemath](http://emath.s40.xrea.com/)の影響を受けています。お礼申しあげます。
+
+
+## ライセンス
+
+このパッケージは[GNU GPL v3 or newer](http://www.gnu.org/licenses/gpl-3.0.html)のもとで配布しています。
+
+
+## 更新履歴
+
++ Version 1.0 2022-06-29
+ + The first public version.
+
+
+---
+
+[Yukoh KUSAKABE](https://twitter.com/metaphysicainfo) (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols.sty b/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols.sty
new file mode 100644
index 0000000000..f22aa76b81
--- /dev/null
+++ b/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols.sty
@@ -0,0 +1,625 @@
+%%
+%% jpnedumathsymbols.sty
+%% for making handouts in Japanese Education
+%%
+%% Copyright (C) 2022 Yukoh KUSAKABE (screen-name)
+%% https://www.metaphysica.info/
+%% https://twitter.com/metaphysicainfo
+%%
+%% This file released under
+%% [GNU GPL v3 or newer](http://www.gnu.org/licenses/gpl-3.0.html).
+%%
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{jpnedumathsymbols}[2022/06/29 v1.0]
+%
+%% [nofrac]
+\newif\if@jpnedu@symbol@nofrac
+\@jpnedu@symbol@nofracfalse
+\DeclareOption{nofrac}{\@jpnedu@symbol@nofractrue}%
+%
+%% [nosqrt]
+\newif\if@jpnedu@symbol@nosqrt
+\@jpnedu@symbol@nosqrtfalse
+\DeclareOption{nosqrt}{\@jpnedu@symbol@nosqrttrue}%
+%
+%% [nolim]
+\newif\if@jpnedu@symbol@nolim
+\@jpnedu@symbol@nolimfalse
+\DeclareOption{nolim}{\@jpnedu@symbol@nolimtrue}%
+%
+%% [novec]
+\newif\if@jpnedu@symbol@novec
+\@jpnedu@symbol@novecfalse
+\DeclareOption{novec}{\@jpnedu@symbol@novectrue}%
+%
+%% [nopointroman]
+\newif\if@jpnedu@symbol@nopointroman
+\@jpnedu@symbol@nopointromanfalse
+\DeclareOption{nopointroman}{\@jpnedu@symbol@nopointromantrue}%
+%
+%% [nocurriculum]
+\newif\if@jpnedu@symbol@nocurriculum
+\@jpnedu@symbol@nocurriculumfalse
+\DeclareOption{nocurriculum}{\@jpnedu@symbol@nocurriculumtrue}%
+%
+%% [mathbb]
+\newif\if@jpnedu@symbol@mathbb
+\@jpnedu@symbol@mathbbfalse
+\DeclareOption{mathbb}{\@jpnedu@symbol@mathbbtrue}
+%
+%% [setcolon]
+\newif\if@jpnedu@symbol@setcolon
+\@jpnedu@symbol@setcolonfalse
+\DeclareOption{setcolon}{\@jpnedu@symbol@setcolontrue}
+%
+%% [rvecbracket]
+\newif\if@jpnedu@symbol@rvecbracket%
+\@jpnedu@symbol@rvecbracketfalse
+\DeclareOption{rvecbracket}{\@jpnedu@symbol@rvecbrackettrue}
+
+%% [cvecbracket]
+\newif\if@jpnedu@symbol@cvecbracket%
+\@jpnedu@symbol@cvecbracketfalse
+\DeclareOption{cvecbracket}{\@jpnedu@symbol@cvecbrackettrue}
+
+%% [innerproductbracket]
+\newif\if@jpnedu@symbol@innerproductbracket%
+\@jpnedu@symbol@innerproductbracketfalse
+\DeclareOption{innerproductbracket}{\@jpnedu@symbol@innerproductbrackettrue}
+%
+\ExecuteOptions{}
+\ProcessOptions\relax
+%
+% for \begin{bmatrix}
+% \begin{cmatrix}
+\RequirePackage{amsmath}
+\RequirePackage{amssymb}
+%
+% for \NewDocumentEnvironment
+\RequirePackage{xparse}
+%
+% for \begin{empheq}
+\RequirePackage{empheq}
+%
+%%%
+%% FRAC
+%%%
+%
+\if@jpnedu@symbol@nofrac
+\else
+%
+%% \originalfrac
+\let\originalfrac\frac
+%
+%% \frac
+\renewcommand{\frac}[2]{\mathchoice%
+{{\displaystyle\originalfrac{\raisebox{-0.42ex}{$\,#1\,$}}{\raisebox{0.1ex}{$\,#2\,$}}}}%
+{{\displaystyle\originalfrac{\raisebox{-0.42ex}{$\,#1\,$}}{\raisebox{0.1ex}{$\,#2\,$}}}}%
+{\originalfrac{#1}{#2}}%
+{\originalfrac{#1}{#2}}%
+}%
+%
+\fi
+%
+%%%
+%% SQRT
+%%%
+%
+\if@jpnedu@symbol@nosqrt
+\else
+%
+%% \originalsqrt
+\let\originalsqrt\sqrt
+%
+%% \sqrt
+\renewcommand{\sqrt}[2][\phantom{1}]{\mathchoice%
+{\!\originalsqrt[\leftroot{-1}\uproot{0}#1]{\vphantom{(}#2\hspace{1pt}}}%
+{\!\originalsqrt[\leftroot{-1}\uproot{0}#1]{\vphantom{(}#2\hspace{1pt}}}%
+{\originalsqrt[#1]{#2}}%
+{\originalsqrt[#1]{#2}}}
+%
+\fi
+%
+%%%
+%% LIM
+%%%
+%
+\if@jpnedu@symbol@nolim
+\else
+%
+%% \originallim
+\let\originallim\lim
+%
+%% \lim
+\renewcommand{\lim}{\originallim\limits}
+%
+\fi
+%
+%%%
+%% VEC
+%%%
+%
+\if@jpnedu@symbol@novec
+\else
+%
+%% \originalvec
+\let\originalvec\vec
+%
+%% \vec
+\DeclareRobustCommand{\vec}[1]%
+{\hspace{-1pt}\overrightarrow{\hspace{1pt}\vphantom{T}#1\hspace{1pt}}\hspace{-1pt}}
+%{\overrightarrow{\hspace{1pt}\vphantom{T}#1\hspace{1pt}}}
+%
+\fi
+%
+%%%
+%% POINTROMAN
+%%%
+%
+\if@jpnedu@symbol@nopointroman
+\else
+%
+%% \angstrom
+\let\angstrom\AA
+%
+%% \capitaleszett
+\let\capitaleszett\SS
+%
+%% \AA -- \ZZ
+\DeclareRobustCommand\AA{\mathrm{A}}
+\DeclareRobustCommand\BB{\mathrm{B}}
+\DeclareRobustCommand\CC{\mathrm{C}}
+\DeclareRobustCommand\DD{\mathrm{D}}
+\DeclareRobustCommand\EE{\mathrm{E}}
+\DeclareRobustCommand\FF{\mathrm{F}}
+\DeclareRobustCommand\GG{\mathrm{G}}
+\DeclareRobustCommand\HH{\mathrm{H}}
+\DeclareRobustCommand\II{\mathrm{I}}
+\DeclareRobustCommand\JJ{\mathrm{J}}
+\DeclareRobustCommand\KK{\mathrm{K}}
+\DeclareRobustCommand\LL{\mathrm{L}}
+\DeclareRobustCommand\MM{\mathrm{M}}
+\DeclareRobustCommand\NN{\mathrm{N}}
+\DeclareRobustCommand\OO{\mathrm{O}}
+\DeclareRobustCommand\PP{\mathrm{P}}
+\DeclareRobustCommand\QQ{\mathrm{Q}}
+\DeclareRobustCommand\RR{\mathrm{R}}
+\DeclareRobustCommand\SS{\mathrm{S}}
+\DeclareRobustCommand\TT{\mathrm{T}}
+\DeclareRobustCommand\UU{\mathrm{U}}
+\DeclareRobustCommand\VV{\mathrm{V}}
+\DeclareRobustCommand\WW{\mathrm{W}}
+\DeclareRobustCommand\XX{\mathrm{X}}
+\DeclareRobustCommand\YY{\mathrm{Y}}
+\DeclareRobustCommand\ZZ{\mathrm{Z}}
+%
+\fi
+%
+%%%
+%% CURRICULUM
+%%%
+%
+\if@jpnedu@symbol@nocurriculum
+\else
+%
+% for \ajroman
+\RequirePackage{otf}
+%
+%% \mathI \mathA \mathIA etc.
+\DeclareRobustCommand{\currI}{\ajRoman{1}}
+\DeclareRobustCommand{\currII}{\ajRoman{2}}
+\DeclareRobustCommand{\currIII}{\ajRoman{3}}
+\DeclareRobustCommand{\currA}{A}
+\DeclareRobustCommand{\currB}{B}
+\DeclareRobustCommand{\currC}{C}
+\DeclareRobustCommand{\currD}{D}
+\DeclareRobustCommand{\currE}{E}
+\DeclareRobustCommand{\currF}{F}
+\DeclareRobustCommand{\currG}{G}
+\DeclareRobustCommand{\currH}{H}
+\DeclareRobustCommand{\currI}{I}
+\DeclareRobustCommand{\currJ}{J}
+\DeclareRobustCommand{\currK}{K}
+\DeclareRobustCommand{\currL}{L}
+\DeclareRobustCommand{\currM}{M}
+\DeclareRobustCommand{\currN}{N}
+\DeclareRobustCommand{\currO}{O}
+\DeclareRobustCommand{\currP}{P}
+\DeclareRobustCommand{\currQ}{Q}
+\DeclareRobustCommand{\currR}{R}
+\DeclareRobustCommand{\currS}{S}
+\DeclareRobustCommand{\currT}{T}
+\DeclareRobustCommand{\currU}{U}
+\DeclareRobustCommand{\currV}{V}
+\DeclareRobustCommand{\currW}{W}
+\DeclareRobustCommand{\currX}{X}
+\DeclareRobustCommand{\currY}{Y}
+\DeclareRobustCommand{\currZ}{Z}
+\DeclareRobustCommand{\curra}{a}
+\DeclareRobustCommand{\currb}{b}
+\DeclareRobustCommand{\currc}{c}
+\DeclareRobustCommand{\currd}{d}
+\DeclareRobustCommand{\curre}{e}
+\DeclareRobustCommand{\currf}{f}
+\DeclareRobustCommand{\currg}{g}
+\DeclareRobustCommand{\currh}{h}
+\DeclareRobustCommand{\curri}{i}
+\DeclareRobustCommand{\currj}{j}
+\DeclareRobustCommand{\currk}{k}
+\DeclareRobustCommand{\currl}{l}
+\DeclareRobustCommand{\currm}{m}
+\DeclareRobustCommand{\currn}{n}
+\DeclareRobustCommand{\curro}{o}
+\DeclareRobustCommand{\currp}{p}
+\DeclareRobustCommand{\currq}{q}
+\DeclareRobustCommand{\currr}{r}
+\DeclareRobustCommand{\currs}{s}
+\DeclareRobustCommand{\currt}{t}
+\DeclareRobustCommand{\curru}{u}
+\DeclareRobustCommand{\currv}{v}
+\DeclareRobustCommand{\currw}{w}
+\DeclareRobustCommand{\currx}{x}
+\DeclareRobustCommand{\curry}{y}
+\DeclareRobustCommand{\currz}{z}
+\DeclareRobustCommand{\curralpha}{α}
+\DeclareRobustCommand{\currbeta}{β}
+\DeclareRobustCommand{\currgamma}{γ}
+\DeclareRobustCommand{\currdelta}{δ}
+\DeclareRobustCommand{\currepsilon}{ε}
+\DeclareRobustCommand{\currzeta}{ζ}
+\DeclareRobustCommand{\curreta}{η}
+\DeclareRobustCommand{\currtheta}{θ}
+\DeclareRobustCommand{\curriota}{ι}
+\DeclareRobustCommand{\currkappa}{κ}
+\DeclareRobustCommand{\currlambda}{λ}
+\DeclareRobustCommand{\currmu}{μ}
+\DeclareRobustCommand{\currnu}{ν}
+\DeclareRobustCommand{\currxi}{ξ}
+\DeclareRobustCommand{\curromicron}{ο}
+\DeclareRobustCommand{\currpai}{π}
+\DeclareRobustCommand{\currrho}{ρ}
+\DeclareRobustCommand{\currsigma}{σ}
+\DeclareRobustCommand{\currtau}{τ}
+\DeclareRobustCommand{\currupsilon}{υ}
+\DeclareRobustCommand{\currphi}{φ}
+\DeclareRobustCommand{\currchi}{χ}
+\DeclareRobustCommand{\currpsi}{ψ}
+\DeclareRobustCommand{\curromega}{ω}
+\DeclareRobustCommand{\currIA}{\@ifstar{\@jpnedu@symbol@currIA@star}{\@jpnedu@symbol@currIA@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@currIA@star}{\ajRoman{1}+A}
+\DeclareRobustCommand{\@jpnedu@symbol@currIA@nostar}{\ajRoman{1}A}
+\DeclareRobustCommand{\currIIB}{\@ifstar{\@jpnedu@symbol@currIIB@star}{\@jpnedu@symbol@currIIB@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@currIIB@star}{\ajRoman{2}+B}
+\DeclareRobustCommand{\@jpnedu@symbol@currIIB@nostar}{\ajRoman{2}B}
+\DeclareRobustCommand{\currIIBC}{\@ifstar{\@jpnedu@symbol@currIIBC@star}{\@jpnedu@symbol@currIIBC@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@currIIBC@star}{\ajRoman{2}+B+C}
+\DeclareRobustCommand{\@jpnedu@symbol@currIIBC@nostar}{\ajRoman{2}BC}
+\DeclareRobustCommand{\currIIIC}{\@ifstar{\@jpnedu@symbol@currIIIC@star}{\@jpnedu@symbol@currIIIC@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@currIIIC@star}{\ajRoman{3}+C}
+\DeclareRobustCommand{\@jpnedu@symbol@currIIIC@nostar}{\ajRoman{3}C}
+\fi
+%
+%% \phantomheight
+\DeclareRobustCommand{\phantomheight}[1][\frac{1}{2}]{\vphantom{\raisebox{4pt}{\ensuremath{#1}}}\vphantom{\raisebox{-3pt}{\ensuremath{#1}}}}
+%
+%% \comma
+\DeclareRobustCommand{\comma}{\@ifstar{\@jpnedu@symbol@comma@star}{\@jpnedu@symbol@comma@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@comma@nostar}{,\,}
+\DeclareRobustCommand{\@jpnedu@symbol@comma@star}{\,,\,}
+%% \period
+\DeclareRobustCommand{\period}{\@ifstar{\@jpnedu@symbol@period@star}{\@jpnedu@symbol@period@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@period@nostar}{\text{。}\quad}
+\DeclareRobustCommand{\@jpnedu@symbol@period@star}{\,\text{。}\quad}
+%
+%% \pair{}{} \pair*{}{}
+%% \triplet{}{}{} \triplet*{}{}
+%% \quadruplet{}{}{}{} \quadruplet*{}{}{}
+\DeclareRobustCommand{\pair}
+{\@ifstar{\@jpnedu@symbol@pair@star}{\@jpnedu@symbol@pair@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@pair@star}[2]{(#1,\,#2)}
+\DeclareRobustCommand{\@jpnedu@symbol@pair@nostar}[2]{\left(#1,\,#2\right)}
+\DeclareRobustCommand{\triplet}
+{\@ifstar{\@jpnedu@symbol@triplet@star}{\@jpnedu@symbol@triplet@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@triplet@star}[3]{(#1,\,#2,\,#3)}
+\DeclareRobustCommand{\@jpnedu@symbol@triplet@nostar}[3]{\left(#1,\,#2,\,#3\right)}
+\DeclareRobustCommand{\quadruplet}
+{\@ifstar{\@jpnedu@symbol@quadruplet@star}{\@jpnedu@symbol@quadruplet@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@quadruplet@star}[4]{(#1,\,#2,\,#3,\,#4)}
+\DeclareRobustCommand{\@jpnedu@symbol@quadruplet@nostar}[4]{\left(#1,\,#2,\,#3,\,#4\right)}
+%
+%% \intersection
+%% \union
+\DeclareRobustCommand{\intersection}{\cap}
+\DeclareRobustCommand{\union}{\cup}
+%
+%% \complement{}
+\let\originalcmpl\cmpl
+\DeclareRobustCommand{\complement}[1]{\overline{\vphantom{T}#1}}
+\let\cmpl\complement
+%
+%% \tand
+%% \tor
+\DeclareRobustCommand{\tand}{\ensuremath{\mathbin{\text{かつ}}}}
+\DeclareRobustCommand{\tor}{\ensuremath{\mathbin{\text{または}}}}
+%% \eand
+%% \eor
+\DeclareRobustCommand{\eand}{\ensuremath{\mathbin{\text{and}}}}
+\DeclareRobustCommand{\eor}{\ensuremath{\mathbin{\text{or}}}}
+%
+%% \lto
+%% \lfrom
+%% \iff
+%% \plto
+%% \plfrom
+%% \piff
+\let\originaliff\iff
+\DeclareRobustCommand{\lto}{\ensuremath{\mathrel{\Longrightarrow}}}
+\DeclareRobustCommand{\lfrom}{\ensuremath{\mathrel{\Longleftarrow}}}
+\DeclareRobustCommand{\iff}{\ensuremath{\mathrel{\Longleftrightarrow}}}
+\DeclareRobustCommand{\plto}{\ensuremath{\mathrel{\phantom{\Longrightarrow}}}}
+\DeclareRobustCommand{\plfrom}{\ensuremath{\mathrel{\phantom{\Longlrftarrow}}}}
+\DeclareRobustCommand{\piff}{\ensuremath{\mathrel{\phantom{\Longleftrightarrow}}}}
+%
+%% \peq
+\DeclareRobustCommand{\peq}{\mathrel{\phantom{=}}}
+%
+%% \set{}{}
+%% ([setcolon])
+\if@jpnedu@symbol@setcolon
+\DeclareRobustCommand{\set}[2]{\left\{\,#1\,;\,#2\,\right\}}
+\else
+\DeclareRobustCommand{\set}[2]{\left\{\,#1\,\middle|\,#2\,\right\}}
+\fi
+%
+%% \N \NZ \NP \Z \Q \R \C
+%% ([mathbb])
+\if@jpnedu@symbol@mathbb
+\DeclareRobustCommand{\N}{\ensuremath{\mathbb{N}}}
+\DeclareRobustCommand{\NZ}{\ensuremath{\mathbb{N}_{0}}}
+\DeclareRobustCommand{\NP}{\ensuremath{\mathbb{N}_{+}}}
+\DeclareRobustCommand{\Z}{\ensuremath{\mathbb{Z}}}
+\DeclareRobustCommand{\Q}{\ensuremath{\mathbb{Q}}}
+\DeclareRobustCommand{\R}{\ensuremath{\mathbb{R}}}
+\DeclareRobustCommand{\C}{\ensuremath{\mathbb{C}}}
+\else
+\DeclareRobustCommand{\N}{\ensuremath{\mathbf{N}}}
+\DeclareRobustCommand{\NZ}{\ensuremath{\mathbf{N}_{0}}}
+\DeclareRobustCommand{\NP}{\ensuremath{\mathbf{N}_{+}}}
+\DeclareRobustCommand{\Z}{\ensuremath{\mathbf{Z}}}
+\DeclareRobustCommand{\Q}{\ensuremath{\mathbf{Q}}}
+\DeclareRobustCommand{\R}{\ensuremath{\mathbf{R}}}
+\DeclareRobustCommand{\C}{\ensuremath{\mathbf{C}}}
+\fi
+%
+%% \inverse{<function>}
+\DeclareRobustCommand{\inverse}[1]{#1^{-1}}
+%
+%% \abs{} \abs*{}
+\let\originalabs\abs
+\DeclareRobustCommand{\abs}
+{\@ifstar{\@jpnedu@symbol@abs@star}{\@jpnedu@symbol@abs@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@abs@star}[1]{\lvert#1\rvert}
+\DeclareRobustCommand{\@jpnedu@symbol@abs@nostar}[1]{\left\lvert#1\right\rvert}
+%
+%% \begin{cases}
+\DeclareDocumentEnvironment{ecases}{O{align*} m b}%
+{\vspace{0.25\baselineskip}\begin{empheq}[left={#2=\empheqlbrace\,}]{#1}{#3}\end{empheq}}%
+{\par\vspace{0.25\baselineskip}\noindent}
+%
+%% \begin{simul}{<style>}
+\DeclareDocumentEnvironment{simul}{O{gather*} b}%
+{\vspace{0.25\baselineskip}\begin{empheq}[left=\empheqlbrace\,]{#1}{#2}\end{empheq}}%
+{\par\vspace{0.25\baselineskip}\noindent}
+%
+%% \begin{signchart}{<columns>}
+\newenvironment{signchart}[1]%
+{\vspace{0.25\baselineskip}\begin{equation*}\begin{array}{c|*#1{c}}\hline}%
+{\\\hline\end{array}\end{equation*}\par\vspace{0.25\baselineskip}\noindent}
+%
+%% \neconcave
+%% \seconcave
+%% \seconvex
+%% \neconvex
+% http://www.math.kobe-u.ac.jp/HOME/kodama/tips-latex-bend-arrow.html
+% (GNU/GPL)
+\DeclareRobustCommand{\seconvex}{{\begin{picture}(10,10)%
+\put(10,10){\oval(20,20)[lb]}\put(10,0){\vector(1,0){2}}\end{picture}}}
+\DeclareRobustCommand{\neconcave}{{\begin{picture}(10,10)%
+\put(10,0){\oval(20,20)[lt]}\put(10,10){\vector(1,0){2}}\end{picture}}}
+\DeclareRobustCommand{\neconvex}{{\begin{picture}(10,10)%
+\put(0,10){\oval(20,20)[rb]}\put(10,10){\vector(0,1){2}}\end{picture}}}
+\DeclareRobustCommand{\seconcave}{{\begin{picture}(10,10)%
+\put(0,0){\oval(20,20)[rt]}\put(10,0){\vector(0,-1){2}}\end{picture}}}
+%
+%% \dint
+\DeclareRobustCommand{\dint}{{\displaystyle\int}}
+%
+%% \dr \ds \dt \du \dx \dy \dz \dtheta
+\DeclareRobustCommand{\dr}{\,dr}
+\DeclareRobustCommand{\ds}{\,ds}
+\DeclareRobustCommand{\dt}{\,dt}
+\DeclareRobustCommand{\du}{\,du}
+\DeclareRobustCommand{\dx}{\,dx}
+\DeclareRobustCommand{\dy}{\,dy}
+\DeclareRobustCommand{\dz}{\,dz}
+\DeclareRobustCommand{\dtheta}{\,d\theta}
+%
+%% \const
+\DeclareRobustCommand{\const}{\mathrm{const.}}
+%
+%% \defint{<from>}{<to>}{<function>}
+\DeclareRobustCommand{\defint}[3]{\left[\vphantom{\frac{1}{2}}#3\right]_{#1}^{#2}}
+%
+%% \transformvariable{<variable1>}{<from1>}{<to1>}{variable2}{<from2>}{<to2>}
+\DeclareRobustCommand{\transformvariable}[6]{\begin{tabular}{c|ccc}
+$#1$&$#2$&$\to$&$#3$\\\hline
+$#4$&$#5$&$\to$&$#6$
+\end{tabular}}
+%
+%% \rvec{}{}
+%% \rvec*{}{}{}
+%% ([rvecbracket])
+\if@jpnedu@symbol@rvecbracket%
+\DeclareRobustCommand{\rvec}
+{\@ifstar{\@jpnedu@symbol@rvec@star}{\@jpnedu@symbol@rvec@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@rvec@star}[3]{\left[#1,\,#2,\,#3\right]}
+\DeclareRobustCommand{\@jpnedu@symbol@rvec@nostar}[2]{\left[#1,\,#2\right]}
+\else%
+\DeclareRobustCommand{\rvec}
+{\@ifstar{\@jpnedu@symbol@rvec@star}{\@jpnedu@symbol@rvec@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@rvec@star}[3]{\left(#1,\,#2,\,#3\right)}
+\DeclareRobustCommand{\@jpnedu@symbol@rvec@nostar}[2]{\left(#1,\,#2\right)}
+\fi%
+%
+%% \cvec{}{}
+%% \cvec*{}{}{}
+%% ([cvecbracket])
+\if@jpnedu@symbol@cvecbracket%
+\DeclareRobustCommand{\cvec}
+{\@ifstar{\@jpnedu@symbol@cvec@star}{\@jpnedu@symbol@cvec@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@cvec@star}[3]{\begin{bmatrix}\,#1\,\\\,#2\,\\\,#3\,\end{bmatrix}}
+\DeclareRobustCommand{\@jpnedu@symbol@cvec@nostar}[2]{\begin{bmatrix}\,#1\,\\\,#2\,\end{bmatrix}}
+\else%
+\DeclareRobustCommand{\cvec}
+{\@ifstar{\@jpnedu@symbol@cvec@star}{\@jpnedu@symbol@cvec@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@cvec@star}[3]{\begin{pmatrix}\,#1\,\\\,#2\,\\\,#3\,\end{pmatrix}}
+\DeclareRobustCommand{\@jpnedu@symbol@cvec@nostar}[2]{\begin{pmatrix}\,#1\,\\\,#2\,\end{pmatrix}}
+\fi%
+%
+%% \innerproduct{}{} \inp{}{}
+\let\originalinp\inp
+\if@jpnedu@symbol@innerproductbracket
+\DeclareRobustCommand{\innerproduct}
+{\@ifstar{\@jpnedu@symbol@innerproduct@star}{\@jpnedu@symbol@innerproduct@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@innerproduct@star}[2]{\langle #1\relax,#2\rangle}
+\DeclareRobustCommand{\@jpnedu@symbol@innerproduct@nostar}[2]{\left\langle #1\relax,#2\right\rangle}
+\else%
+\DeclareRobustCommand{\innerproduct}
+{\@ifstar{\@jpnedu@symbol@innerproduct@star}{\@jpnedu@symbol@innerproduct@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@innerproduct@star}[2]{#1\cdot #2\relax}
+\DeclareRobustCommand{\@jpnedu@symbol@innerproduct@nostar}[2]{#1\cdot #2\relax}
+\fi%
+\let\inp\innerproduct
+%
+%% \sequence{} \seq{}
+\let\originalseq\seq
+\DeclareRobustCommand{\sequence}[1]{\ensuremath{\left\{#1\right\}}}
+\let\seq\sequence
+%
+%% \sum*
+\let\originalsum\sum
+\DeclareRobustCommand{\sum}
+{\@ifstar{\@jpnedu@symbol@sum@star}{\@jpnedu@symbol@sum@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@sum@star}{\textstyle\sum}
+\DeclareRobustCommand{\@jpnedu@symbol@sum@nostar}{\originalsum}
+%
+%% \GCD
+%% \LCM
+\DeclareRobustCommand{\GCD}{\mathop{\mathrm{GCD}}\nolimits}
+\DeclareRobustCommand{\LCM}{\mathop{\mathrm{LCM}}\nolimits}
+%
+%% \degree
+\let\originaldegree\degree
+\DeclareRobustCommand{\degree}{^{\circ}}
+%
+%% \arc{}
+% http://www.artsci.kyushu-u.ac.jp/~ssaito/jpn/tex/tips/misc.html#arc
+\let\originalarc\arc
+\DeclareRobustCommand{\arc}[1]{%
+\settowidth{\dimen0}{\ensuremath{#1}}%
+\divide\dimen0 by 2%
+\overset{\rotatebox{-90}{\ensuremath{\left(\rule{0pt}{\dimen0}\right.\!}}}{#1}%
+}
+%
+%% \parallel
+% https://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/8814.html
+\let\originalparallel\parallel
+\DeclareRobustCommand{\parallel}{%
+\mathrel{\raise.3ex\hbox{\scalebox{.7}{%
+\rotatebox[origin=c]{-7}{/}\kern-.35em\rotatebox[origin=c]{-7}{/}}}}}%
+\DeclareRobustCommand{\notparallel}
+{\mathrel{\raise.3ex\hbox{\scalebox{.7}{%
+\ooalign{\rotatebox[origin=c]{-7}{/}\kern-.35em\rotatebox[origin=c]{-7}{/}\crcr%
+\hfil\raisebox{.2ex}{$\backslash$}\hfil}}}}}%
+%
+%% \similar
+\let\originalsimilar\similar
+\DeclareRobustCommand{\similar}{\mathrel{\lower.2ex\hbox{\scalebox{1.3}{∽}}}}
+%
+%% \permutation{}{}
+%% \combination{}{}
+%% \repeatedpermutation{}{}
+%% \homogeneous{}{} \repeatedcombination{}{}
+\DeclareRobustCommand{\permutation}[2]{\ensuremath{{}_{#1}\mathrm{P}_{#2}}}
+\DeclareRobustCommand{\combination}[2]{\ensuremath{{}_{#1}\mathrm{C}_{#2}}}
+\DeclareRobustCommand{\repeatedpermutation}[2]{\ensuremath{{}_{#1}\mathrm{\Pi}_{#2}}}
+\DeclareRobustCommand{\homogeneous}[2]{\ensuremath{{}_{#1}\mathrm{H}_{#2}}}
+\let\repeatedcombination\homogeneous
+%
+%% \expectedvalue{}
+%% ([mathbb])
+\if@jpnedu@symbol@mathbb
+\DeclareRobustCommand{\expectedvalue}[1]{\mathbb{E}\left(#1\right)}
+\else
+\DeclareRobustCommand{\expectedvalue}[1]{\mathbf{E}\left(#1\right)}
+\fi
+%
+%% \Re
+%% \Im
+\let\originalRe\Re
+\let\originalIm\Im
+\DeclareRobustCommand{\Re}{\mathrm{Re}\,}
+\DeclareRobustCommand{\Im}{\mathrm{Im}\,}
+%
+%% \conjugate{}
+%% \conj{}
+\let\originalconjugate\conjugate
+\let\originalconj\conj
+\DeclareRobustCommand{\conjugate}[1]{\overline{\mathstrut #1}}
+\let\conj\conjugate
+%
+%% \parentext{<text>}
+%% \squaretext{<text>}
+%% \whitesquaretext{<text>}
+\DeclareRobustCommand{\parentext}[1]{\text{(#1)}}
+\DeclareRobustCommand{\squaretext}[1]{\text{「#1」}}
+\DeclareRobustCommand{\whitesquaretext}[1]{\text{『#1』}}
+%
+%% \ltext{<text>}
+%% \lltext{<text>}
+\DeclareRobustCommand{\ltext}{\squaretext}
+\DeclareRobustCommand{\lltext}{\whitesquaretext}
+\DeclareRobustCommand{\ltextbegin}{\text{「}}
+\DeclareRobustCommand{\lltextbegin}{\text{『}}
+\DeclareRobustCommand{\ltextend}{\text{」}}
+\DeclareRobustCommand{\lltextend}{\text{』}}
+%
+%% \nomination{}
+\DeclareRobustCommand{\nomination}{\parentext}
+%
+%% \condition
+\DeclareRobustCommand{\condition}{\@ifstar{\@jpnedu@symbol@condition@star}{\@jpnedu@symbol@condition@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@condition@star}[1]{\quad\parentext{#1}}
+\DeclareRobustCommand{\@jpnedu@symbol@condition@nostar}[1]{\parentext{#1}}
+%
+%% \explanation{}
+\DeclareRobustCommand{\explanation}{\@ifstar{\@jpnedu@symbol@explanation@star}{\@jpnedu@symbol@explanation@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@explanation@nostar}[1]{\parentext{\raisebox{1.5pt}{$\because$\ }#1}}
+\DeclareRobustCommand{\@jpnedu@symbol@explanation@star}[1]{\parentext{#1}}
+%
+%% \quantify
+\DeclareRobustCommand{\quantify}[1]{\text{#1}\ }
+%
+%% \equationunit
+\DeclareRobustCommand{\equationunit}[1]{\parentext{#1}}
+%
+%% \texttherefore
+%% \textbecause
+\DeclareRobustCommand{\texttherefore}{\ensuremath{\raisebox{1.5pt}{$\therefore$}}}
+\DeclareRobustCommand{\textbecause}{\ensuremath{\raisebox{1.5pt}{$\because$}}}
+%
+%% \QED
+\DeclareRobustCommand{\QED}{■}
+%
+%% EOF \ No newline at end of file
diff --git a/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols_example.pdf b/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols_example.pdf
new file mode 100644
index 0000000000..6b60510e28
--- /dev/null
+++ b/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols_example.pdf
Binary files differ
diff --git a/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols_example.tex b/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols_example.tex
new file mode 100644
index 0000000000..c9debf3c32
--- /dev/null
+++ b/macros/latex/contrib/jpnedumathsymbols/jpnedumathsymbols_example.tex
@@ -0,0 +1,132 @@
+\documentclass[uplatex]{jsarticle}
+\usepackage{jpnedumathsymbols}
+\begin{document}
+\setlength{\baselineskip}{2em}
+A$\frac{1}{2}$B
+
+A$\sqrt[3]{2}$B
+
+A$\lim_{x\to 1}$B
+
+A$\vec{a}+\vec{B}$B
+
+$\triangle\AA\BB\CC$
+
+数学\currIA
+
+$a\comma b$
+
+$a\period$
+
+$\pair{1}{2}$ $\triplet{1}{2}{3}$ $\quadruplet*{1}{2}{3}{4}$
+
+$A\intersection B$ $C\union D$
+
+$\complement{A}$
+
+$A\tand B$ $A\tor B$
+
+$A\eand B$ $A\eor B$
+
+$A\lto B\lfrom C\iff D$
+
+\begin{align*}
+&\piff A\\
+&\iff B
+\end{align*}
+
+$A=B$
+
+\begin{align*}
+&\peq A\\
+&=B
+\end{align*}
+
+$\set{A}{B}$
+
+$\N \NZ \NP \Z \Q \R \C$
+
+$\inverse{f}$
+
+$\abs{\frac{1}{2}} \abs*{\frac{1}{2}}$
+
+\begin{ecases}{A}
+B\\
+C
+\end{ecases}
+
+\begin{simul}
+A=A\\
+B=B
+\end{simul}
+
+\begin{signchart}{3}
+x&1&\cdots&2\\\hline
+\phantomheight f(x)&0&\neconcave&1
+\end{signchart}
+
+$\dint\dtheta=\theta+\const$
+
+$\dint_{1}^{2}\dx=\defint{1}{2}{x}$
+
+\transformvariable{x}{1}{2}{t}{0}{1}
+
+$\rvec{1}{2}$ $\rvec*{1}{2}{3}$
+
+$\cvec{1}{2}$ $\cvec*{1}{2}{3}$
+
+$\innerproduct{\vec{a}}{\vec{b}}$
+
+$\sequence{a_{n}}$
+
+\[\sum*_{k=1}^{n}\]
+
+$\GCD\pair{1}{2}$ $\LCM\pair{1}{2}$
+
+$30\degree$
+
+$\arc{\AA\BB}$
+
+$l\parallel m$
+
+$\triangle\AA\BB\CC\similar\triangle\AA\BB\CC$
+
+$\permutation{n}{r} \combination{n}{r} \repeatedpermutation{n}{r} \repeatedcombination{n}{r}$
+
+$\expectedvalue{P}$
+
+$\Re \Im$
+
+$\conjugate{\alpha}$
+
+$a \parentext{a} \squaretext{a} \whitesquaretext{a}$
+
+$a \ltext{a} \lltext{a}$
+
+$\ltextbegin \lltextbegin \ltextend \lltextend$
+
+$a=\nomination{a}$
+
+\[
+A=
+\begin{dcases}
+B&\condition{b}\\
+C&\condition{c}
+\end{dcases}
+\]
+
+\begin{ecases}{A}
+B&\condition*{b}\\
+C&\condition*{c}
+\end{ecases}
+
+$a\explanation{a}$
+
+$\quantify{任意の実数$x$に対し}x=1$
+
+$a=1\equationunit{kgw}$
+
+a \texttherefore\ b \textbecause\ c
+
+\QED
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index eac8e19ebe..30af5a6176 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
index 03ec63d63c..40588e3c7c 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -14,6 +14,13 @@
\usepackage{graphics}
\usepackage{hvlogos}
\usepackage{simplekv}
+\usepackage{tabto}
+\usepackage{pgf,pgfplots}
+\pgfplotsset{
+ compat=newest,
+ xlabel near ticks,
+ ylabel near ticks
+}
\usepackage{tkz-tab}
\usepackage{listofitems}
\usepackage{xintexpr}
@@ -35,8 +42,8 @@
\setlength{\parindent}{0pt}
\definecolor{LightGray}{gray}{0.9}
-\def\PLversion{1.1.5}
-\def\PLdate{13 Mai 2022}
+\def\PLversion{1.1.6}
+\def\PLdate{28 Juin 2022}
\tcbset{vignettes/.style={%
nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
@@ -195,12 +202,16 @@ Une commande pour créer, en \TikZ, un cercle trigo avec options.
Une commande pour afficher un petit schéma, en \TikZ, sur le signe d'une fonction affine ou d'un trinôme.
-Deux commandes pour, en \TikZ, créer des petits schémas \og de signe \fg
+Deux commandes pour, en \TikZ, créer des petits schémas \og de signe \fg.
+
+Une commande pour déterminer des paramètres ($a$, $b$, $r$ et $r^2$) d'une régression linéaire par moindres carrés.
\vspace{1.5cm}
\hfill{}\textit{Merci à Anne pour ses retours et sa relecture !}
+\hfill{}\textit{Merci aux membres du groupe \faFacebook{} du \og Coin \LaTeX{} \fg{} pour leur aide et leurs idées !}
+
\vfill
\hrule
@@ -2292,9 +2303,338 @@ En ce qui concerne les autres arguments :
\newpage
+\section{Paramètres d'une régression linéaire par la méthode des moindres carrés}
+
+\subsection{Idée}
+
+\begin{codeidee}
+L'idée est d'utiliser une commande qui va permettre de calculer les paramètres principaux d'un régression linéaire par la méthode des moindres carrés.
+
+Le package \ctex{pgfpots} permet de le faire nativement, mais le moteur de calculs de \textsf{pgf} n'est pas des plus performants avec de grandes valeurs, donc ici cela passe par \ctex{xfp} qui permet de gagner en précision !
+
+\smallskip
+
+L'idée est que cette macro calcule et stocke les paramètres dans des variables (le nom peut être personnalisé !) pour exploitation ultérieure :
+
+\begin{itemize}
+ \item en calculs \textit{purs} ;
+ \item dans un environnement \TikZ{} via \textsf{pgfplots} ou bien en \textit{natif} ;
+ \item dans un environnement \PSTricks{} ;
+ \item dans un environnement \METAPOST{} (à vérifier quand même) ;
+ \item \ldots
+\end{itemize}
+\end{codeidee}
+
+\begin{codetex}[listing only]
+...
+\PLreglin[<clés>]{<listeX>}{<listeY>} %listes avec éléments séparés par des ,
+...
+\end{codetex}
+
+\begin{codeinfo}
+La commande \ctex{PLreglin} va définir également des \textsf{macros} pour chaque coefficient, qui de ce fait seront réutilisables après !
+\end{codeinfo}
+
+\subsection{Commandes}
+
+\begin{codecles}
+Quelques \Cle{Clés} sont disponibles pour cette commande, essentiellement pour \textit{renommer} les paramètres :
+
+\begin{itemize}
+ \item la clé \Cle{nomcoeffa} qui permet de définir la variable qui contiendra $a$ ;\hfill{}défaut \Cle{COEFFa}
+ \item la clé \Cle{nomcoeffb} qui permet de définir la variable qui contiendra $b$ ;\hfill{}défaut \Cle{COEFFb}
+ \item la clé \Cle{nomcoeffr} qui permet de définir la variable qui contiendra $r$ ;\hfill{}défaut \Cle{COEFFr}
+ \item la clé \Cle{nomcoeffrd} qui permet de définir la variable qui contiendra $r^2$ ;\hfill{}défaut \Cle{COEFFrd}
+ \item la clé \Cle{nomxmin} qui permet de définir la variable qui contiendra $x_{\text{min}}$ ;\hfill{}défaut \Cle{LXmin}
+ \item la clé \Cle{nomxmax} qui permet de définir la variable qui contiendra $x_{\text{max}}$.\hfill{}défaut \Cle{LXmax}
+\end{itemize}
+\end{codecles}
+
+\begin{codetex}[listing only]
+%les espaces verticaux n'ont pas été écrits ici
+\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
+\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
+\PLreglin{\LLX}{\LLY}
+%vérif des calculs (noms non modifiables...)
+Liste des X := \showitems\LX.
+Liste des Y := \showitems\LY.
+Somme des X := \LXSomme{} et somme des Y := \LYSomme.
+Moyenne des X := \LXmoy{} et moyenne des Y := \LYmoy.
+Variance des X := \LXvar{} et variance des Y := \LYvar{}
+Covariance des X/Y := \LXYvar.
+%les coefficients, avec des noms modifiables !
+Min des X := \LXmin{} et Max des X := \LXmax.
+Coefficient $a=\COEFFa$.
+Coefficient $b=\COEFFb$.
+Coefficient $r=\COEFFr$.
+Coefficient $r^2=\COEFFrd$.
+\end{codetex}
+
+\begin{codesortie}
+\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
+\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
+\PLreglin{\LLX}{\LLY}
+
+Liste des X := \showitems\LX.
+
+\smallskip
+
+Liste des Y := \showitems\LY.
+
+\smallskip
+
+Somme des X := \LXSomme{} et somme des Y := \LYSomme.
+
+\smallskip
+
+Moyenne des X := \LXmoy{} et moyenne des Y := \LYmoy.
+
+\smallskip
+
+Variance des X := \LXvar{} et variance des Y := \LYvar{}
+
+\smallskip
+
+Covariance des X/Y := \LXYvar.
+
+\smallskip
+
+Min des X := \LXmin{} et Max des X := \LXmax.
+
+\smallskip
+
+Coefficient $a=\COEFFa$.\tabto{0.5\textwidth}Coefficient $b=\COEFFb$.
+
+%\smallskip
+%
+%Coefficient $b=\COEFFb$.
+
+\smallskip
+
+Coefficient $r=\COEFFr$.\tabto{0.5\textwidth}Coefficient $r^2=\COEFFrd$.
+
+%\smallskip
+%
+%Coefficient $r^2=\COEFFrd$.
+\end{codesortie}
+
+\begin{codeinfo}
+\hfill~\includegraphics[height=3cm]{./graphics/pl-doc-stats_a}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_b}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_c}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_c2}\hfill~
+\end{codeinfo}
+
+\begin{codeinfo}
+Les \textsf{macros} qui contiennent les paramètres de la régression sont donc réutilisables, en tant que nombres réels, donc exploitables par \ctex{siunitx} et \ctex{xfp} pour affichage \textit{fin} ! Ci-dessous un exemple permettant de visualiser tout cela.
+\end{codeinfo}
+
+\begin{codetex}[listing only]
+%les espaces verticaux n'ont pas été écrits ici
+\def\LstX{0,1,3,4,5,6}
+\def\LstY{-35,-37.4,-37.7,-39.9,-39,-39.6}
+%on lance les calculs et on change le nom des "macros-résultats"
+\PLreglin[nomcoeffa=TESTa,nomcoeffb=TESTb,nomcoeffr=TESTr,nomcoeffrd=TESTrd,%
+ nomxmin=TESTmin,nomxmax=TESTmax]{\LstX}{\LstY}
+%commandes complémentaires
+\DeclareDocumentCommand\arrond{ s O{3} m }{% * pour afficher signe / opt = précision / argument = nb
+ \IfBooleanTF{#1}{\num[print-implicit-plus]{\fpeval{round(#3,#2)}}}{\num{\fpeval{round(#3,#2)}}}
+}
+%paramètres
+Les valeurs extr. de X sont \TESTmin{} et \TESTmax. Une éq. est $y=\arrond[3]{\TESTa}x \arrond*[3]{\TESTb}$.
+Le coeff. de corrélation est $r=\arrond[4]{\TESTr}$, et son carré est $r^2=\arrond[4]{\TESTrd}$.
+\end{codetex}
+
+\begin{codesortie}
+\def\LstX{0,1,3,4,5,6}\def\LstY{-35,-37.4,-37.7,-39.9,-39,-39.6}
+\PLreglin[nomcoeffa=TESTa,nomcoeffb=TESTb,nomcoeffr=TESTr,nomcoeffrd=TESTrd,nomxmin=TESTmin,nomxmax=TESTmax]{\LstX}{\LstY}
+\DeclareDocumentCommand\arrond{ s O{3} m }{
+ \IfBooleanTF{#1}{\num[print-implicit-plus]{\fpeval{ceil(#3,#2)}}}
+ {\num{\fpeval{round(#3,#2)}}}
+}
+
+Les valeurs extrêmes de X sont \TESTmin{} et \TESTmax. Une équation de la droite de régression de $y$ en $x$ est $y=\arrond[3]{\TESTa}x \arrond*[3]{\TESTb}$.
+
+\smallskip
+
+Le coefficient de corrélation linéaire est $r=\arrond[4]{\TESTr}$, et son carré est $r^2=\arrond[4]{\TESTrd}$.
+\end{codesortie}
+
+\begin{codeinfo}
+\hfill~\includegraphics[height=3cm]{./graphics/pl-doc-stats_d}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_e}\hfill~
+\end{codeinfo}
+
+\pagebreak
+
+\subsection{Intégration dans un environnement \TikZ}
+
+\begin{codeinfo}
+La commande étant \og autonome \fg{}, elle va pouvoir être intégrée dans des environnements graphiques pour permettre un tracé \textit{facile} de la droite de régression.
+\end{codeinfo}
+
+\begin{codetex}[listing only]
+\begin{tikzpicture}
+ \begin{axis}[
+ /pgf/number format/.cd,use comma,xmin = 1992, xmax = 2012,ymin = 1640, ymax = 1730,
+ width = 0.7\textwidth,height = 0.35\textwidth,xtick distance = 2,ytick distance = 10,
+ grid = both,minor tick num = 1,major grid style = {lightgray},minor grid style = {lightgray!25},
+ xlabel = {\small Année ($x$)},ylabel = {\small Altitude du glacier (en m) ($y$)},
+ x tick label style={/pgf/number format/.cd, set thousands separator={}},
+ y tick label style={/pgf/number format/.cd, set thousands separator={}},
+ legend cell align = {left},legend pos = north east]
+ \addplot[teal, only marks,forget plot] table{
+ X Y
+ 1994 1718
+ 1995 1710
+ 1996 1708
+ 1997 1700
+ 1998 1698
+ 1999 1697
+ 2000 1691
+ 2001 1688
+ 2002 1683
+ 2004 1679
+ 2005 1671
+ 2006 1670
+ 2007 1663
+ 2008 1661
+ 2009 1656
+ 2010 1649
+ };
+ \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
+ \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
+ \PLreglin{\LLX}{\LLY}
+ \addplot [thick,orange,domain=\LXmin:\LXmax,samples=2]{\COEFFa*x+\COEFFb};
+ \addlegendentry{$y = \fpeval{round(\COEFFa,3)}\,x + \fpeval{round(\COEFFb,3)}$};
+ \addlegendentry{$R^2=\fpeval{round(\COEFFrd,5)}$};
+ \end{axis}
+\end{tikzpicture}
+\end{codetex}
+
+\begin{codesortie}
+\begin{tikzpicture}
+ \begin{axis}[
+ /pgf/number format/.cd,
+ use comma,
+ xmin = 1992, xmax = 2012,
+ ymin = 1640, ymax = 1730,
+ width = 0.7\textwidth,
+ height = 0.35\textwidth,
+ xtick distance = 2,
+ ytick distance = 10,
+ grid = both,
+ minor tick num = 1,
+ major grid style = {lightgray},
+ minor grid style = {lightgray!25},
+ xlabel = {\small Année ($x$)},
+ ylabel = {\small Altitude du glacier (en m) ($y$)},
+ x tick label style={/pgf/number format/.cd, set thousands separator={}},
+ y tick label style={/pgf/number format/.cd, set thousands separator={}},
+ legend cell align = {left},
+ legend pos = north east
+ ]
+ \addplot[teal, only marks] table{
+ X Y
+ 1994 1718
+ 1995 1710
+ 1996 1708
+ 1997 1700
+ 1998 1698
+ 1999 1697
+ 2000 1691
+ 2001 1688
+ 2002 1683
+ 2004 1679
+ 2005 1671
+ 2006 1670
+ 2007 1663
+ 2008 1661
+ 2009 1656
+ 2010 1649
+ };
+ \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
+ \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
+ \PLreglin{\LLX}{\LLY}
+ \addplot [thick,orange,domain=\LXmin:\LXmax,samples=2]{\COEFFa*x+\COEFFb};
+ \addlegendentry{$y = \fpeval{round(\COEFFa,3)}\,x + \fpeval{round(\COEFFb,3)}$};
+ \addlegendentry{$R^2=\fpeval{round(\COEFFrd,5)}$};
+ \end{axis}
+\end{tikzpicture}
+\end{codesortie}
+
+
+\pagebreak
+
+\begin{codeinfo}
+IL existe également une commande auxiliaire, \ctex{PLreglinpts} pour afficher le nuage de points avec quelques options, dans un environnement \TikZ{} classique (sans \textsf{pgfplot})\ldots
+\end{codeinfo}
+
+\begin{codetex}[listing only]
+...
+\begin{tikzpicture}[<options>]
+ ...
+ \PLreglinpts[<clés>]{<listeX>}{<listeY>}
+ ...
+\end{tikzpicture}
+\end{codetex}
+
+\begin{codecles}
+Quelques \Cle{Clés} sont disponibles pour cette commande, essentiellement pour la mise en forme du nuage :
+
+\begin{itemize}
+ \item la clé \Cle{couleur} pour la couleur des points du nuage ;\hfill{}défaut \Cle{teal}
+ \item la clé \Cle{taille} pour la taille des points (type \textit{cercle}) ;\hfill{}défaut \Cle{2pt}
+ \item la clé \Cle{Ox} pour spécifier la valeur initiale Ox (si changement d'origine) ;\hfill{}défaut \Cle{0}
+ \item la clé \Cle{Oy} pour spécifier la valeur initiale Oy (si changement d'origine).\hfill{}défaut \Cle{0}
+\end{itemize}
+\end{codecles}
+
+\begin{codetex}[listing only]
+\begin{tikzpicture}[x=0.5cm,y=0.05cm]
+ \draw[xstep=1,ystep=5,lightgray!50,very thin] (0,0) grid (20,100);
+ \draw[xstep=2,ystep=10,lightgray,thin] (0,0) grid (20,100);
+ \draw[thick,->] (0,0)--(20,0) ;
+ \draw[thick,->] (0,0)--(0,100) ;
+ \foreach \x in {1992,1994,...,2010} \draw[thick] ({\x-1992},4pt)--({\x-1992},-4pt) node[below] {$\x$} ;
+ \foreach \y in {1640,1650,...,1730} \draw[thick] (4pt,{\y-1640})--(-4pt,{\y-1640}) node[left] {$\y$} ;
+ \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
+ \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
+ \def\Ox{1992}\def\Oy{1640}
+ \PLreglin{\LLX}{\LLY}
+ \PLreglinpts[Ox=1992,Oy=1640,couleur=blue,taille=3pt]{\LLX}{\LLY}
+ \draw[orange,very thick,samples=2,domain=\LXmin:\LXmax] plot ({\x-\Ox},{\COEFFa*(\x)+\COEFFb-\Oy}) ;
+ \matrix [draw,fill=white,below left] at (current bounding box.north east) {
+ \node {$y = \fpeval{round(\COEFFa,3)}\,x + \fpeval{round(\COEFFb,3)}$} ; \\
+ \node {$R^2=\fpeval{round(\COEFFrd,5)}$} ; \\
+ };
+\end{tikzpicture}
+\end{codetex}
+
+\begin{codesortie}
+\begin{tikzpicture}[x=0.5cm,y=0.05cm]
+ \draw[xstep=1,ystep=5,lightgray!50,very thin] (0,0) grid (20,100);
+ \draw[xstep=2,ystep=10,lightgray,thin] (0,0) grid (20,100);
+ \draw[thick,->] (0,0)--(20,0) ;
+ \draw[thick,->] (0,0)--(0,100) ;
+ \foreach \x in {1992,1994,...,2010} \draw[thick] ({\x-1992},4pt)--({\x-1992},-4pt) node[below] {$\x$} ;
+ \foreach \y in {1640,1650,...,1730} \draw[thick] (4pt,{\y-1640})--(-4pt,{\y-1640}) node[left] {$\y$} ;
+ \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
+ \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
+ \def\Ox{1992}\def\Oy{1640}
+ \PLreglin{\LLX}{\LLY}
+ \PLreglinpts[Ox=1992,Oy=1640,couleur=blue,taille=3pt]{\LLX}{\LLY}
+ \draw[orange,very thick,samples=2,domain=\LXmin:\LXmax] plot ({\x-\Ox},{\COEFFa*(\x)+\COEFFb-\Oy}) ;
+ \matrix [draw,fill=white,below left] at (current bounding box.north east) {
+ \node {$y = \fpeval{round(\COEFFa,3)}\,x + \fpeval{round(\COEFFb,3)}$} ; \\
+ \node {$R^2=\fpeval{round(\COEFFrd,5)}$} ; \\
+ };
+\end{tikzpicture}
+\end{codesortie}
+
+\newpage
+
\section{Historique}
-{\small \bverb|v1.1.5|~:~~~~Ajout de deux commandes \textsf{aidesignePL} et \ctex{aidesignetkztabPL} pour, en \TikZ, créer des petits schémas \og de signe \fg
+{\small \bverb|v1.1.6|~:~~~~Ajout d'une commande \textsf{PLregln} pour déterminer les paramètres d'une régression linéaire par moindres carrés
+
+{\small \bverb|v1.1.5|~:~~~~Ajout de deux commandes \textsf{aidesignePL} et \textsf{aidesignetkztabPL} pour, en \TikZ, créer des petits schémas \og de signe \fg
{\small \bverb|v1.1.4|~:~~~~Ajout d'une commande \textsf{cercletrigoPL} pour, en \TikZ, créer facilement un cercle trigo avec \textit{options}
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_a.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_a.png
new file mode 100644
index 0000000000..5c05987140
--- /dev/null
+++ b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_a.png
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_b.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_b.png
new file mode 100644
index 0000000000..90dce1c0ce
--- /dev/null
+++ b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_b.png
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c.png
new file mode 100644
index 0000000000..d7fecfb3e7
--- /dev/null
+++ b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c.png
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c2.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c2.png
new file mode 100644
index 0000000000..74e1b905e0
--- /dev/null
+++ b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c2.png
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_d.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_d.png
new file mode 100644
index 0000000000..b9821f36c4
--- /dev/null
+++ b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_d.png
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_e.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_e.png
new file mode 100644
index 0000000000..c2de13f554
--- /dev/null
+++ b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_e.png
Binary files differ
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index 2b498305f5..98f5b192c6 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,8 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2022/05/13 - v1.1.5 - Aide pour l'utilisation de LaTeX en lycée]
+\ProvidesPackage{ProfLycee}[2022/06/28 - v1.1.6 - Aide pour l'utilisation de LaTeX en lycée]
+% 1.1.6 Ajout d'une commande pour déterminer les paramètres d'un régression linéaire par moindres carrés
% 1.1.5 Ajout de commandes pour "visualiser" le signe de ax+b ou de ax2+bx+c (cf tnsana !)
% 1.1.4 Ajout d'une commande cercletrigoPL pour, en \TikZ, créer facilement un cercle trigo avec options
% 1.1.3 Ajout d'une commande ensemble pour créer un ensemble à partir d'une liste
@@ -1181,10 +1182,107 @@
#2 = numligne
#3 = échelle
#4 = décalage
- \shorthandoff{:}\shorthandoff{!} %bizzzzzzzzare
+ %\shorthandoff{:}\shorthandoff{!} %bizzzzzzzzare
+ %\NoAutoSpacing
\coordinate (Z) at ($(T2#2)!.5!(T2\the\numexpr#2+1\relax)$) ;
- \shorthandon{:}\shorthandon{!}
+ %\shorthandon{:}\shorthandon{!}
\path (Z.east) + (#4,0) pic[right,scale=#3,every node/.style={scale=#3}] {code={\aidesignePL[#1]}} ;
}
+%=============RegressionLinéaire======= OK !!
+%calcul des paramètres
+\defKV[coeffreglin]{%
+ nomcoeffa=\def\RegLinCoeffa{#1},%
+ nomcoeffb=\def\RegLinCoeffb{#1},%
+ nomcoeffr=\def\RegLinCoeffr{#1},%
+ nomcoeffrd=\def\RegLinCoeffrd{#1},%
+ nomxmin=\def\RegLinCoeffXmin{#1},%
+ nomxmax=\def\RegLinCoeffXmax{#1}
+}
+
+\setKVdefault[coeffreglin]{%
+ nomcoeffa=COEFFa,%
+ nomcoeffb=COEFFb,%
+ nomcoeffr=COEFFr,%
+ nomcoeffrd=COEFFrd,%
+ nomxmin=LXmin,%
+ nomxmax=LXmax
+}
+
+\newcommand\PLreglin[3][]{
+ \useKVdefault[coeffreglin]
+ \setKV[coeffreglin]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %xmin et xmax
+ \expandafter\def\csname\RegLinCoeffXmin\endcsname{\fpeval{min(#2)}}
+ \expandafter\def\csname\RegLinCoeffXmax\endcsname{\fpeval{max(#2)}}
+ %listes des données
+ \def\xliste{#2}
+ \def\yliste{#3}
+ \readlist*\LX{\xliste}
+ \readlist*\LY{\yliste}
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}
+ %somme des LX et des LY OK
+ \xdef\LXSomme{0}
+ \xdef\LYSomme{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LXSomme{\fpeval{\LXSomme+\LX[\i]}}
+ }
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LYSomme{\fpeval{\LYSomme+\LY[\i]}}
+ }
+ %moyenne des LX et des LY OK
+ \xdef\LXmoy{\fpeval{\LXSomme/\LNB}}
+ \xdef\LYmoy{\fpeval{\LYSomme/\LNB}}
+ %variance des LX et des LY OK
+ \xdef\LXvar{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LXvar{\fpeval{\LXvar+(\LX[\i]-\LXmoy)*(\LX[\i]-\LXmoy)}}
+ }
+ \xdef\LXvar{\fpeval{\LXvar/\LNB}}
+ \xdef\LYvar{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LYvar{\fpeval{\LYvar+(\LY[\i]-\LYmoy)*(\LY[\i]-\LYmoy)}}
+ }
+ \xdef\LYvar{\fpeval{\LYvar/\LNB}}
+ %covariance des XY OK
+ \xdef\LXYvar{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LXYvar{\fpeval{\LXYvar+(\LX[\i]-\LXmoy)*(\LY[\i]-\LYmoy)}}
+ }
+ \xdef\LXYvar{\fpeval{\LXYvar/\LNB}}
+ %COEFFS OK
+ \expandafter\def\csname\RegLinCoeffa\endcsname{\fpeval{\LXYvar/\LXvar}}
+ \expandafter\def\csname\RegLinCoeffb\endcsname{\fpeval{\LYmoy-\csname\RegLinCoeffa\endcsname*\LXmoy}}
+ \expandafter\def\csname\RegLinCoeffr\endcsname{\fpeval{\LXYvar/sqrt(\LXvar*\LYvar)}}
+ \expandafter\def\csname\RegLinCoeffrd\endcsname{\fpeval{\csname\RegLinCoeffr\endcsname*\csname\RegLinCoeffr\endcsname}}
+}
+
+%pour un nuage en TiKz
+\defKV[nuagereglin]{%
+ couleur=\def\RegLinNuageCouleur{#1},%
+ taille=\def\RegLinNuageTaille{#1},
+ Ox=\def\RegLinNuageOx{#1},%
+ Oy=\def\RegLinNuageOy{#1},%
+}
+
+\setKVdefault[nuagereglin]{%
+ couleur=teal,%
+ taille=2pt,%
+ Ox=0,%
+ Oy=0
+}
+
+\newcommand\PLreglinpts[3][]{%
+ \useKVdefault[nuagereglin]
+ \setKV[nuagereglin]{#1}% on paramètres les nouvelles clés et on les simplifie
+ \def\xliste{#2}
+ \def\yliste{#3}
+ \readlist*\LX{\xliste}
+ \readlist*\LY{\yliste}
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}
+ \foreach \i in {1,2,...,\LNB} {\filldraw[\RegLinNuageCouleur] ({\LX[\i]-\RegLinNuageOx},{\LY[\i]-\RegLinNuageOy}) circle[radius=\RegLinNuageTaille] ;}
+}
+
\endinput \ No newline at end of file