Sokratesさんの備忘録ないし雑記帳

ブログは同人誌の一種だと思って書いてる.書きたいことを書いている.駄文注意.

本文に直接 mathbf と書くのをやめよう 〜LaTeX 初心者よ,見栄えと構造の分離を意識せよ〜

という煽りタイトルをつければ興味を引くかなと思った.簡単な内容で申し訳ない.「そもそもお前も LaTeX 初心者だろ」と言われると「それはそう」と言うほかない.

この記事は TeX & LaTeX Advent Calendar 2021 - Adventar の21日目の記事です.20日目は hilssh さんの うぶつん: LaTeXで宛名ラベルシールの差し込み印刷をする という記事でした.22 日目は t-kemmochi さんの tcolorboxでスライドを作る - Qiita という記事です.参加者の中で一番 TeX プログラミングに暗い人間ですが,Twitter で回転画像を眺めていたら書かなければいけない気になってきたので書きます.重点テーマとあまり関係ない内容で申し訳ない.

見栄えと構造の分離をしよう

LaTeX で文書を書くようになってから半年くらい経ったときのこと,急に本文中のベクトルの表記をボールド体(\mathbf)ではなく,上に矢印(\overrightarrow)にしたくなったことがある.このとき,\mathbf を他の意味でも使っていたために,エディタの一括変換では修正ができなくなったことを覚えている.これはプリアンブルにおいて

\newcommand[1]{\mathvect}{\mathbf{#1}}

と定義しておいて,ベクトルを書くときはこの「\mathvect」を使うようにすればこのような事態は防げた.そうしておけば、先のコマンドを

\newcommand[1]{\mathvect}{\overrightarrow{#1}}

と定義し直せばすぐ終わったのである.これは「見栄えと構造の分離をしていなかった」ことが原因の苦労である.
文書において何らかの文字列装飾をする場合,普通は「文字列を装飾すること(見栄え)」そのものが目的ではなく,「文字列に何らかの意味を付与すること(文書構造)」が目的で行われているはずである*1.これらを分離することで,後で「同じ意味内容」の「見栄え」を一括して変更する際,コマンドの定義を書き換えるだけで,変更を終えることができる.
また,コマンドの名前を適切に定義することによって,たとえば,この文字列が「ベクトル」を意図して書かれたことなどが,他の人にも明らかになる.特に複数の変数領域を扱うような分野においては,タイプミスの防止にもなる.
Word のような WYSWYG*2と違い,LaTeXマークアップ言語なので「見栄えと構造の分離が容易」というのがメリットである(反面コマンドを使うのになれる必要はあるが).そのメリットを存分に活かすため,文字装飾のコマンド("\mathbf" など)を本文中に直接打ち込むのは極力避けるべきである.

見た目と構造の分離の具体例

抽象的な話だけだと何をすればよいのかわからない人も出てくると思われるので,いくつか具体例をあげてみる.

ほぼ全員がやっている「見た目と構造の分離」

「見た目と構造の分離」という概念を聞いたことがなくても,LaTeX ユーザーがほぼ間違いなく行っている「見た目と構造の分離」がある.
それは \section などの「見出し用のコマンド」である.節のはじめの見出しなどで

\noindent \textbf{1. hoge}

という書き方をする人間はほとんど居ないはずである*3.この書き方では「節」なのか「箇条書きの一部」なのかがわからない.節の始まりの見出しでは,やはり

 \section{hoge}

と書くべきである.

似たように Remark を書き始める際も

\noindent \textbf{Remark.} hogefuga......

などと書き始めるより,定理環境 remark を

\usepackage{amsthm}
\newtheorem*{remark}{Remark}

と用意し

\begin{remark}
hogefuga......
\end{remark}

などと書くべきである*4

強調のためのコマンド

「強調」という明確な「意味」をもってフォント(見た目)を変更する場合,それ用のコマンドを用意するべきである.
LaTeX には \emph という強調のためのコマンドが用意されている.使用するドキュメントクラスやスタイルファイルによって,どのような装飾が行われるかは変わってくるが,仮に強調の仕方を変えたい場合,プリアンブルに

\renewcommand[1]{\emph}{\textgt{#1}}

などと書いておけば強調の方法を変更することができる.元の \emph 以外にも強調がほしければ,たとえば

\newcommand[1]{\bigemph}{\textgt{#1}}

などとコマンドを定義すれば良い.

有識者による指摘(2020/12/25 追記)

有識者 W 氏によると,LaTeX 標準の \emph コマンドはネスト(重ねがけ)ができるらしい.そのためか最近のLaTeX2e ではネストごとの字体を指定するための \DeclareEmphSequence というコマンドが存在するらしい.たとえば,

\DeclareEmphSequence{\itshape,\upshape\scshape,\itshape}

などとすると,第一レベルでは斜体(イタリック体),第二レベルではスモールキャップス体,第三レベルではスモールキャップスの斜体に変更をすることができる.
そのため,\renewcommand で \emph を再定義するよりも

\DeclareEmphSequence{\gtfamily\sffamily}

と定義した方が良いのではないかとのことである*5.詳しいことは

$texdoc ltnews31

すると表示される LaTeX News, Issue 31, February 2020 の p.3 "Handling of nested emphasis" を参照してほしい.

わざわざこの記事を読んでコメントをくれた有識者の W 氏には深く感謝する.ありがとうございます.

数学的な意味を表現するためのコマンド

先の

\newcommand[1]{\mathvect}{\mathbf{#1}}

というコマンドは「ベクトル」を表す文字だということを明確に表現している*6.同じように数学的に意味のある表記などは「見栄えと構造の分離」という観点からコマンドを定義したほうが良いように思う*7.たとえば,私の LaTeX のプリアンブルには

\newcommand{\mathsetintension}[2]{\left\{ #1 \left| #2 \right. \right\} }
\newcommand{\mathsetextension}[1]{\left\{ #1 \right\} }

などという集合の内包記法と外延記法のためのコマンドを用意してある.コマンドの名前が長いと感じるかもしれないが,「補完機能」のついていないエディタの方が珍しい現在においては,名前の長さはそれほど問題ならないと思う.「補完機能」を使えば良いからである.そのため,名前の長さよりも名前の明確さの方を優先するべきに私は思う.もちろん,長すぎて,名前の意味を理解しにくいとなると問題だが.

ちなみに,こういう数学的な意味を表現するためのコマンドを用意してくれている physics パッケージなるものがあるが,

$texdoc physics

して,定義されているコマンドを見る限り,引数の数によって出力が変わるコマンドがあるなどわたしには使いやすいパッケージとは思えない.が,このパッケージを愛用している者もいるとは聞くので,こういったパッケージを利用するのも一つの手かもしれない.

結論

「見栄えと構造の分離」を意識して,文書を作ろう.とはいえ,あまり意識しすぎて,自作コマンドを大量に用意しすぎすると,管理が大変になるので気をつけよう. 自作コマンドは他人が読んでも意味を推測できるような名前をつけるようにしよう.
実際は完全に「見栄えと構造の分離」をするのはかなり厳しいので,最初はうまく行かなくてもしょうがない.「見栄えと構造の分離」を目指して,今日も LaTeX していこう.
もし,本記事に間違ったことを書いていたら申し訳なく思うが,そのような場合,優しく教えていただけると幸いである.特に有識者からの指摘は甘んじて受け入れる.

*1:フォントの紹介の場合は「文字列を装飾する」事自体が目的になるが.ただ,そのような文書を書くことは普通は稀に思われる.

*2:"What You See is What You Get" の略.画面上の文書の見た目通りに印刷されることが期待されるような文書ソフトなどをそのように呼ぶ.

*3:\section コマンドを知らないレベルで LaTeX に慣れてないならば仕方ないが.

*4:信じられないことに前者の書き方を勧める自称「TeX に詳しい人」に私は会ったことがある.

*5:和文であればゴシック体、欧文であればサンセリフにするという意図。

*6:と思う.

*7:やりすぎはまずいが.

群準同型が単射である条件のおはなし

群準同型の単射必要十分条件でおもしろいものを知ったので記す.

補題
\( A, B \) を群,\( f\colon A \to B \) を群準同型とする.
\( f^{-1}\left(1_{B} \right) = \{ 1_{A} \} \) ならば,\(f\) は単射

証明.
\(f\left( a_{0} \right) = f\left( a_{1} \right)\) を仮定する.
すると,
\[f\left( a_{0} \right) \left(f\left( a_{1} \right) \right)^{-1} = 1_{B} \]
である.\(f\) は群準同型なので
\[f\left( a_{0}a_{1}^{-1} \right) = 1_{B}. \]
\( f^{-1}\left(1_{B} \right) = \{ 1_{A} \} \) であるから,
\[a_{0}a_{1}^{-1}=1_{A}. \]
よって,\(a_{0}=a_{1}\).ゆえに \(f\) は単射である. \(\blacksquare\)

命題
\( A, B \) を群,\( f\colon A \to B \) を群準同型とする.
ある \(b\in B\) について,その\(f\) による引き戻しが一点集合ならば,\(f\) は単射

証明.
\( f^{-1}\left( b \right) = \{ a \} \) を仮定する.
\( a' \in f^{-1}\left( 1_{B} \right) \) と仮定する.
\begin{align*}
b &= f\left(a\right) \\
&= f\left(a\right) \cdot 1_{B} \\
&= f\left(a\right) \cdot f\left(a'\right) \\
&= f\left( aa' \right)
\end{align*}
よって,\(aa'\in f^{-1}\left( b \right)\). \( f^{-1}\left( b \right) = \{ a \} \) より,\(aa'=a. \) ゆえに\(a'=1_{A}.\)
以上より\( f^{-1}\left(1_{B} \right) = \{ 1_{A} \}. \) 補題より\(f\) は単射.\(\blacksquare\)

基礎研究をする底辺大学院生の戯言〜聞け!男一匹が命をかけて諸君らに訴えているんだぞ!〜

おまえら、聞け。静かにせい。静かにせい。話を聞け。男一匹が命をかけて諸君に訴えているんだぞ。
いいか。それがだ、今、大学院生がだ、ここでもって立ち上がらねば、大学が立ち上がらなきゃ、日本の研究業界の復活ってものはないんだよ。諸君は永久にだね、ただの無駄飯食らいになってしまうんだぞ。
おれは4年待ったんだ。大学が立ち上がる日を。……4年待ったんだ、……最後の30分に……待っているんだよ。諸君は研究者だろう。研究者ならばどうして基礎研究を否定する政府の方針を守るんだ。どうして自分を否定する政府のために、基礎研究の重要性を否定する財務省・政府にぺこぺこするんだ。政府方針に「選択と集中」がある限り、諸君たちは永久に救われんのだぞ。







われわれ大学院生は、大学によって育てられ、いわば大学はわれわれの父でもあり、兄でもある。その恩義に報いるに、このような忘恩的行為に出たのは何故であるか。かえりみれば、私は四年、大学内で大学院生としての待遇を受け、一片の打算もない敎育を受け、又われわれも心から大学・研究を愛し、もはや大学の外にはない「真理の探求」をここに夢み、ここでこそついに知らなかった男の涙を知った。ここで流したわれわれの汗は純一であり、窮理の精神を相共にする同志と共に誰も通ったことのない研究の荒野を馳驅した。このことには一点の疑いもない。われわれにとって大学は故郷であり、世知辛い現代日本で自由な研究をできる唯一の場所であった。教官、助教諸氏から受けた愛情は測り知れない。しかもなお、敢えてこの暴挙に出たのは何故であるか。たとえ強弁と言われようとも、大学を基礎研究を愛するが故であると私は断言する。
われわれは日本が、経済危機から目先の物事に囚われ、国の大本を忘れ、国民精神を失い、本を正さずして末に走り、その場しのぎと偽善に陥り、自ら魂の空白状態へ落ち込んでゆくのを見た。政治は矛盾の糊塗、自己の保身、権力欲、偽善にのみ捧げられ、国家百年の大計はゆとり教育により失われ、教育事業・経済政策などの政府の失敗はただただごまかされ、日本人自ら日本の未来を汚していくのを、歯噛みをしながら見ていなければならなかった。われわれは今や大学にのみ、真の基礎研究、真の自由、真の研究者の魂が残されているのを夢みた。しかも一般大衆には、大学における研究は不要であることは明白であり、国の根本問題である研究・教育が、御都合主義の財務省の戯言によってごまかされ、大学運営交付金を減らされ続け、大学人の魂の腐敗、道義の退廃、業績の減少の根本原因をなして来ているのを見た。最も基礎研究を重んずべき大学が、もっとも悪質な欺瞞の下に放置されて来たのである。大学は国家の無茶な要求に答えてきた。大学は学問の府たりえず、研究資金を与えられず、ただ、職業訓練学校としてのみの役割を求められ、その精神さえも踏みにじられてきた。われわれはバブル後のあまりに永い日本の眠りに憤った。大学が目ざめる時こそ、日本が目ざめる時だと信じた。大学が自ら目ざめることなしに、この眠れる日本が目ざめることはないのを信じた。積極財政によって、大学がその本義に立ち戻り、真の学問の府となる日のために、国民として微力の限りを尽くすこと以上に大いなる責務はない、と信じた。
四年前、私はひとり志を抱いて大学に入り、基礎研究に身を捧げる決意を固めた。ただ、大学が目ざめる時、大学を真の学問の府にするために、「真理」を探求するために、命を捨てようという決心にあった。積極財政がもはや議会制度下では難しくとも、われわれは基礎研究活動の尖兵となって命を捨て、基礎研究の礎石たらんとした。重要だがお金生まない研究を守るのは大学であり、お金を生む研究をするのは企業・民間の研究所である。応用研究が行き詰まりを見せた段階に来て、はじめて基礎研究の重要さは再認識され、大学はその本義を回復するであろう。大学の本義とは「学問の保護」にしか存在しないのである。国のねじ曲がった大本を正すという使命のため、われわれは少数もっぱら訓練を受け、挺身しようとしていたのである。
しかしながら去る2020年何が起こったか。この空前のコロナ禍という状況による驚くべき不況、民の生活苦にも関わらず、積極的な財政出動は行われなかった。その状況に、私は、「これで財務省の方針は変わらない」と痛恨した。コロナ禍には何が起こったか。政府は戒厳令にも等しい規制、同調圧力で、ウイルスを押さえ込み、あえて「積極財政」という火中の栗を拾はずとも、事態を収拾しうる自信を得たのである。財政出動は不用になった。政府は公助によってではなく、民の自助で乗り切る自信を得、国の根本問題から目をそらし続ける自信を得た。財務省には財政健全化の飴玉をしゃぶらせつづけ、実を捨て虚を取る方策を固め、基礎研究の研究者の苦しみから目をそらし続けたのである。基礎研究の研究者の苦しみから目をそらし続ける!政治家にとってはそれでよからう。しかし大学にとっては、致命傷であることに、政治家は気づかないはずはない。そこでふたたび、前にもまさる偽善と隠蔽、ごまかしがはじまった。
銘記せよ!遡ること国立大学法人化以来十七年間は、大学にとって悲劇の日々だつた。国立大学法人化以来十七年に渡って、大学運営交付金の増額を待ちこがれてきた大学にとって、決定的にその希望が裏切られ、研究環境の改善、研究者の待遇改善は政治的プログラムから除外され、自民党民主党、学生の味方を名乗る公明党までもが、教育・研究業界の崩壊をただただ放置し続けた日々であった。この日々はまさに「競争的資金」に頼らなければ学生の指導もままならない大学を量産し続けた日々であった。研究者たちは、研究・教育の資金を得るために「研究業績」にも「教育の業績」にもならない書類を大量に書かなければならなくなってしまったのである。これ以上のパラドクスがあろうか。
われわれはこの日々に政治の動向を一刻一刻注視した。われわれが夢みていたように、もし大学教員に研究者の魂があるのならば、どうしてこの事態を目視しえよう。自らを迫害するものから資金を得るとは、何たる道義的矛盾であらう。研究者であれば、研究者の誇りがどうしてこれを容認しえよう。我慢に我慢を重ねても、守るべき最後の一線をこえれば、決然起ち上がるのが男であり研究者である。われわれはひたすら耳をすました。しかし大学のどこからも、「自らを迫害する政府のために研究業績を積め」という屈辱的な命令に対する、男子の声はきこえては来なかった*1。かくなる上は、自らの力を自覚して、国の論理の歪みを正すほかに道はないことがわかっているのに、大学は声を奪われたカナリヤのように黙ったままだつた。
われわれは悲しみ、怒り、ついには憤激した。われわれは卒業後のポストがないと何もできぬ。しかし博士号取得者に与えられるポストは悲しいかな、最終的には日本政府は用意しないのだ。日本のように教育機関に研究機関に資金を与えずただ「業績を出せ」などと叫び続ける異常な国は他にはないのだ。
この上、財務省文部科学省の戯言に賛同し、より深い自己欺瞞と自己冒涜の道を歩もうとする大学は魂が腐ったのか。研究者の魂はどこへ行ったのだ。魂の死んだ巨大なハコモノになって、どこへ行こうとするのか。学術会議任命拒否に当たっては自民党売国奴呼ばわりした者もあったのに、国家百年の大計にかかわる教育・事業に金を出さない政府には、抗議して腹を切る大学教員一人、大学からは出なかった*2
われわれは四年待った。最後の一年は熱烈に待った。もう待てぬ。自ら冒瀆する者を待つわけには行かぬ。しかしあと三十分、最後の三十分待とう。共に起って義のために共に死ぬのだ。日本を日本の真姿に戻して、そこで死ぬのだ。「すぐ役に立つ」という目先の利益のみで、魂は死んでもよいのか。「すぐ役に立つ」以上の価値なくして何のための研究だ。今こそわれわれは「すぐ役に立つ」以上の価値の所在を諸君の目に見せてやる。それは応用研究ではない。基礎研究だ。われわれの愛する永遠不変の「真理」だ。これを骨抜きにしてしまった文部科学省財務省、政府に体をぶつけて死ぬ奴はいないのか。もしいれば、今からでも共に起ち、共に死のう。われわれは至純の魂を持つ諸君が、一個の男子、真の研究者として蘇ることを熱望するあまり、この暴挙に出たのである。





応用尊重のみで、研究界隈は死んでもよいのか。「すぐ役に立つ」以上の価値なくして何のための研究だ。今こそわれわれは「すぐ役に立つ」以上の価値の所在を諸君の目に見せてやる。それは応用研究ではない。基礎研究だ。われわれの愛する永遠不変の「真理」だ。これを骨抜きにしてしまつた文部科学省財務省、政府に体をぶつけて死ぬ奴はいないのか!

(その直後、バルコニーから総監室に戻り割腹)

参考文献

1. 三島由紀夫、『檄』 http://sybrma.sakura.ne.jp/348mishima.gekibun.html
2. ニッソちゃん、『Vtuber底辺論~聞け!V一匹が命をかけて諸君らに訴えているんだぞ!~』 https://note.com/joicleinfo/n/n64a5778b2a3d
3. Wikipedia 三島事件 https://ja.wikipedia.org/wiki/%E4%B8%89%E5%B3%B6%E4%BA%8B%E4%BB%B6



このブログ記事はフィクションです。

*1:実際はさまざまな学生、研究者、団体が声をあげている。そういった方々には申し訳ないと思っているが、パロディ的にはそっちのほうが面白いので、原文のママにした。

*2:腹を切った大学教員は残念ながら居なかったと思うが、この現状に不満の声を上げる教員はたくさんいた。そもそも、腹を切ったところで、どうなるのかという話でもあるが……

「実数は実在するが虚数は実在しない」とする人々へ

最近,「実数は実在するが虚数は実在しない」とする人に絡まれることが多い.控えめに言って,どれも論理的に破綻しているのであるが,いちいち指摘するのにも疲れてきたので,ここにそれらへの反論をまとめておくことにする.

いくつかの用語の説明

この節ではこの記事に使われる用語を説明する.これらは [1] に準拠して使っているつもりであるが,私の読み間違いなどが理由で,違うものになっている可能性はある.

(数学的対象の)実在

この記事で「(数学的対象)〇〇が実在」と述べた場合,「数学的対象 〇〇 という対象は数学者や人間などから独立して存在する」という意味で用いる.そもそも「『数学的対象が存在する』というのはどういうことか」という「存在」とは何かという問題はあるが,あまり詳細に述べるのはこの記事の役目ではないと考えるので,割愛する.適時,「存在論」についての本を参照せよ.

虚ろな数論者

「実数は実在するが虚数は実在しないとする人」といちいち呼称するするのがしんどいので,こういう人々を「虚ろな数論者」と呼ぶことにする.この記事独自の用語で,わたしも普段は使わない.急に「虚ろな数論者」と言われても何のことかわからん人がほとんどなので,この記事のような議論を他人とする際には注意してほしい*1

プラトン的な世界観 と アリストテレス的世界観

この記事において,「プラトン的な世界観」と述べた場合,「個物に先行する実在論」としての立場を意味する.つまり,少なくともいくつかの普遍者は,その実例に先行して独立して存在するとする立場を意味する.たとえば,この立場の人間にとっては,この世のありとあらゆる「赤い物」を破壊してしまったとしても「赤さ」という性質はなお存在し続ける.

また,「アリストテレス的な世界観」と述べた場合,「個物の内にある実在論」としての立場を意味する.つまり,普遍者の存在は認めるが,普遍者がその実例と独立に存在することは否定する.たとえば,この立場の人間にとっては,プラトン的な世界観の人間とは対照的に,この世のありとあらゆる「赤い物」を破壊してしまったとすると「赤さ」という性質もまた存在しなくなってしまう.

「数学的概念は物理的な対象からの抽象化によって得られる」とする立場の人間は「個物の内に普遍がある」と考えていると思われるため,アリストテレス的な世界観で生きていると推測する.対して,「数学的概念は物理的な対象からの抽象化によって発見される」とする立場の人間は「普遍者は個物に先行している」と考えていると思われるため,プラトン的な世界観で生きていると推測する.

「実数は実在する」ことを前提としている論者をこの記事では主に扱うので,この論者は少なくともこれらのどちらかの立場に立っていると考えられる.

「実数は実在するが虚数は実在しない」とする人々の意見とそれに対する簡単な反論

この節では,「実数は実在するが虚数は実在しない」とする人々(虚ろな数論者)の意見とそれに対する簡単な反論を述べる.

実数には対応する物理的な存在があるが,虚数には対応する物理的な存在がないので実在しない

「虚ろな数論者」の一番良く見かけるタイプの意見は「実数には対応する物理的な存在があるが,虚数に対応する物理的な存在がないので実在しない」である.というか,ほぼ大多数はこの立場である.この立場には次のような問題点がある.

  1. プラトン的な世界観からの批判
    1. 数学的な対象の実在は物理的な世界の存在には依存しないはずである.
  2. アリストテレス的な世界観からの批判
    1. そもそも実数に対応する物理的な存在はない.
      • そもそも十分大きな自然数に対応する物理的な存在もあるのか怪しい.
    2. もし,そのような存在が存在するのであれば,複素数にも対応する物理的な存在も存在するはずである.

これらについて順をおって説明する.

プラトン的な世界観の人間にとっては「物理的に存在しないから実在しない」はナンセンスである.なぜなら,「複素数」という数学的な対象の実在は物理的な存在に依存しないはずだからである.

さて,今度はアリストテレス的な立場から批判を加える.実数に対応するような「物理的な存在」とは何であろうか?これは「数直線」のことであろう.つまり「(幅のない)無限の長さの直線」を用意すれば良いことになる.当たり前だがそのようなものはこの世のどこにも物理的には存在しない.

それどころか,この立場の場合,実数の部分である「自然数」の実在も怪しい.アリストテレス的な世界観の人間にとって,「自然数」という概念は「何らかの物の塊」を数え上げる個数であろう.この世の「粒子の数」は高々有限個であると考えられるので,この世に存在する粒子の数よりも大きな「自然数」には物理的な対応物が存在しないことになる.そうするとグラハム数くらいの大きさのものは実在が怪しい.

さて,虚ろな数論者が「(幅のない)無限の長さの直線」をなんとか物理的に用意できたと仮定しよう.すると,この虚ろな数論者は次に複素数の物理的な対応物と思われるもの「wikipedia:複素平面」の実在を否定しなければならない.つまり「無限の広さの平面」の存在を否定しなければならない.そのようなものは「(幅のない)無限の長さの直線」が二本あれば破綻してしまう.用意できた「(幅のない)無限の長さの直線」が唯一つであることをぜひ示してほしい.その帰結として,この世は一次元であることも得られるはずだが,なぜ,我々はこの世を「三次元」と錯覚しているかもセットで説明してくれるととても嬉しい.

「実数には対応する物理的な存在があるが,虚数には対応する物理的な存在がないので実在しない」とする人々にやってほしいこと

「実数には対応する物理的な存在があるが,虚数には対応する物理的な存在がないので実在しない」とする人々にやってほしいことは次の通りである.

  • 「(幅のない)無限の長さの直線」という物理的な存在が唯一つ存在するが,この世に「無限の広さの平面」は存在し得ないことを示す

実数は物理的な存在の抽象化によって得ることができるが,虚数にはそのようなことができないので実在しない

「実数には対応する物理的な存在があるが,虚数に対応する物理的な存在がないので実在しない」という延長線上なのか「実数は物理的な存在の抽象化によって得ることができるが,虚数にはそのようなことができないので実在しない」という立場もよく見かける.この立場には次のような問題点がある.

  • もし,何らかの物理的存在からの抽象化によって実数概念を得たとするならば,そこから容易に複素数を得ることができ,それゆえ,虚数も実在してしまう.

「何らかの方法によって物理的存在からの抽象化によって実数概念を得た」としよう.さて,実数の組に適切な演算を入れることによって,複素数は構成することができる(wikipedia:ケーリー=ディクソンの構成法).この方法だと,通常高校数学の範囲でよく用いられる \(a+bi\) のような記法は使うことはできなくなるように思われるかもしれないが,\(a+bi\) を \((a, b)\) の略記だと思うことにすれば支障はなくなる.そのため,この論法を用いる「虚ろな数論者」はwikipedia:ケーリー=ディクソンの構成法ができない(または対象の実在を保証しない)ことを示さなければならない.

「実数は物理的な存在の抽象化によって得ることができるが,虚数にはそのようなことができないので実在しない」とする人々にやってほしいこと

「実数は物理的な存在の抽象化によって得ることができるが,虚数にはそのようなことができないので実在しない」とする人々にやってほしいことのリストは次の通りである.

  • 実数の組を考えることができない(または実数の組は実在しない)理由を与える,または
  • 実数の組に適切な演算を考えてはならない(またはそのような演算は実在しない)理由を与える.

数には大小があるはずなので,大小のない複素数は数ではない.ゆえに「虚数」は実在しない

「数には(演算と両立する)大小があるはずなので(演算と両立する)大小のない複素数は数ではない.ゆえに「虚数」は実在しない」という論法もたまに見かける.これは(高校数学の範囲内で扱う)「数概念」は複素数以外は大小関係を持っているから生じる論法だと考えられる.この論法には次のような問題点がある.

  1. そもそも「数」という概念自体かなりあやふやである.
  2. 複素数が数ではないからといって,実在の否定にはならない

まず,第一の点についてだが,「数」というのは曖昧な概念である.「自然数」,「整数」や「有理数」などには「数学的な定義」が存在するが,「数」というものに普遍的に認められている「数学的な定義」は存在しない.少なくとも私は聞いたことはない.実のところ「数」と名前のつくもので大小関係の定義されない数学的概念はいくつもある.そのため「数には大小があるはず」という点もかなり怪しい.

次に第二の点についてだが,「複素数は数でなかった」と仮定しよう.しかし,そのことは「複素数が実在しない」ことを帰結するだろうか?これは論理の飛躍である.この論法が成り立つためには「複素数が実在するならばそれは数でなければならない」ことを示す必要がある.「複素数が実在するならばそれは数でなければならない」ことを示すためには「数」とは何かを確立するところから始めなければならないと思われるので,まずそこから頑張ってほしい.

「数には大小があるはずなので,大小のない複素数は数ではない.ゆえに「虚数」は実在しない」とする人々にやってほしいこと

「数には大小があるはずなので,大小のない複素数は数ではない.ゆえに「虚数」は実在しない」とする人々にやってほしいことのリストは次の通りである.

  1. 複素数」は「数」であるとする定義の確立
  2. 複素数が実在するならばそれは数でなければならない」ということの証明

参考文献

 [1] スチュワート・シャピロ,金子洋之,『数学を哲学する』,筑摩書房

*1:最初「虚ろな数論者」に「虚数虚構論者」という名前を付けようと思ったのだが,「虚構主義」という数学の哲学上の立場が確立されているのを鑑み,このような若干ダサい名前になった.

【備忘録】 WSL から游書体を使う方法

この記事は WSL から游書体を使う方法を備忘録として残すものである.

WSL の TeX Live を常用していると, .tex 文書で游書体を使うために Windows のフォントを読み込みたくなる.その時のための設定方法を記す.

Fontconfig

Linux ではフォントの管理を Fontconfig というソフトウェアで行っているらしい.
まぬあるhttps://www.freedesktop.org/software/fontconfig/fontconfig-user.htmlによると,Fontconfig の設定ファイルは以下のどこかに置けば良いらしい.

  • /etc/fonts/fonts.conf
  • /etc/fonts/fonts.dtd
  • /etc/fonts/conf.d
  • $XDG_CONFIG_HOME/fontconfig/conf.d
  • $XDG_CONFIG_HOME/fontconfig/fonts.conf
  • ~/.fonts.conf.d (ただし,非推奨)
  • ~/.fonts.conf (ただし,非推奨)

sudo 権限使う場所に設定ファイルを置くのは面倒なので,~/.config/fontconfig/fonts.conf に置くことにした.

WSL から游書体を使うための設定

fonts.conf の中身は xml ファイルである.
WSL から Windows のフォントを読み込むための設定は次のとおりである.

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <dir>/mnt/c/Windows/Fonts</dir>
</fontconfig>

ビジネス数学騒動について思うこと

"ビジネス数学"に対する批判について思うところを書くものである.

"ビジネス数学"が炎上してからだいぶ時間が立ってしまったが,ようやくまとまった文章にすることができた.
完全にお気持ち全開の記事なので,そういう文章が苦手な方は読まなくても大丈夫です.

ビジネス数学騒動とは?

ここで言う「ビジネス数学騒動」とは次の2つの騒動の総称である.

  1. 「結婚できる可能性は1/2」騒動
  2. 「統計でウソをつく法・実践編」騒動

この2つの騒動を起点として別の炎上も起きたが,正直フォローしきれていないので、ここではこの2つの騒動に絞って話す.

それぞれの騒動についてまとめる.

「結婚できる可能性は1/2」騒動

「結婚できる可能性は1/2」騒動について説明をする.

次の Togatter のまとめも参考にしてほしい.
togetter.com

  • 日本ビジネス数学協会の代表理事深沢真太郎氏(以下H氏)の書いた本たった9時間でSPIの基礎が身につく!! <2021年度版>に誤りがあった
    • その誤りというのが小学生向けの啓蒙書 目からうろこ 小学生の「さんすう」大疑問100 に書いてあるレベルの誤りであった
      • 具体的には「『結婚できる』か『結婚できない』かという2通りのうちの1通りだから,結婚できる確率は1/2である」という「誠実な誤り」とは考えにくいものである
  • その本の著者は修士号(理学)を持っている
    • その割には上記が誤りであるという指摘が理解できていない
      • どうも「確率とは(事象の元の個数)/(全事象の元の個数)と常に定められる」と本気で思っている節がある
  • 著者本人が言うには「七年前の本」らしい
    • 実はこの種の誤りは H 氏の発信するコンテンツで繰り返されており、「七年前の本」だけが問題ではない(そういった発信を繰り返していたことは H 氏も認めている)
    • じつは「七年前の本」だけではなく,同著者の2019年初版の本にも全く同じ主旨の記述がある.
  • この件で「確率」についてご指摘いただきました|深沢真太郎 累計25万部/ビジネス数学教育家/数字に強い人材・組織をつくる専門家|noteというノートを公開したが,謝罪文の体にはなっているものの謝罪にはなっておらず,それどころか開き直っていると受け取れる主張を展開した

「統計でウソをつく法・実践編」騒動

「統計でウソをつく法・実践編」騒動について説明をする.こちらの騒動は「結婚できる可能性は1/2」騒動に派生して注目を集めたと考えられる.

こちらは次の2つのツイートも参考にしてほしい.

  • 「ビジネス数学」のアカウントに「統計的誤謬」を薦めていると思しきツイートが注目され批判を集めた.
    • 一部,右側のグラフ縦軸の最下点の座標が0から始まっていないことに対する批判もあった.
      • ただし,この批判自体は不適当な批判である.なぜなら,問題となったグラフは折れ線グラフなので,折れ線の傾きが着目するべきポイントなので,原点の位置はあまり関係ない*1
  • それに対して「ビジネス数学」のアカウントが謝罪文を投稿.しかし謝罪するべき部分とはズレた内容であり,やはり批判が集中した.

何が問題であったか

この騒動の問題点は大きく分けて

  1. 深沢真太郎氏個人の数学的知識の欠如
  2. 日本ビジネス数学協会の自浄作用の欠如
  3. 誠実さが欠如していると思われかねない対応

の3つの側面がある.

深沢真太郎氏本人の数学的知識の欠如

  • 「確率」と言ったら「確率の公理」を満たす対象*2のことを数学的には意味するが,「(数学的)確率とは(事象の元の個数)/(全事象の元の個数)と常に定められる」と思っている*3
    • 無限の根元事象があるような確率空間を考えたことがあれば,おかしいことはすぐにわかる.
    • またこの手の誤謬は小学生向けの啓蒙書 目からうろこ 小学生の「さんすう」大疑問100 に書いてある程度にはメジャーなものである.
  • 明らかな数学的なミスにもかかわらず「捉え方の問題」と問題をすり替えるなどしている.
    • 「不誠実さ」に入れようかとも思ったが,「数学的に誤っている」と理解していない節が見られるのでこちらに入れる.

日本ビジネス数学協会の自浄作用の欠如

  • 日本ビジネス数学協会は,公益財団法人 日本数学検定協会(いわゆる数検を開催している団体)が発効する「ビジネス数学インストラクター」なる資格取得者の育成を行っている
    • 日本ビジネス数学協会の会員は,代表理事の書いた本にあのレベルの誤りがあったことを7年間も放置していたまたは気が付かなかったとでもいうのか?
    • 上記のようなレベルの誤りが7年間も放置されていたという衝撃の事実

誠実さが欠如していると思われかねない対応

深沢真太郎氏の対応の問題点
  • 深沢真太郎氏は「七年前の本」と言っているが, 同著者の2019年初版の本にも全く同じ主旨の記述がある.
  • 謝罪文の内容が反省しているように全く見えない.
    • 「あなたたちのやっている数学と私のやっているビジネス数学は違うんです」と受け取れる内容のため,出来の悪い言い訳にしか見えない.
日本数学検定協会の対応の問題点
  • 謝罪すべき点をわざとズラしているかのような謝罪文
    • 「見解をわかりやすく伝わるように適切に表現しましょう」というそもそもの意図が批判されているにもかかわらず,「原点を書いていなかったこと」のみを謝罪している.
      • 先にも述べたが,その点はあまり問題にならない.
      • 「誤解を誘導するようにグラフを書きましょう」と受け取られかねないことを述べたことを謝罪するべきである.
  • この謝罪文自体にも批判が集まったが,その後,日本数学検定協会からのコメントはない.

私の思うこと

ここから先はポエムである.以降,日本数学検定協会の商標である*4「ビジネス数学」と「ビジネスのための数学」を別物として扱う.


「ビジネスのための数学」といわれて,まず私が連想するのは「数理モデリング」や「形式手法」などである.しかし,「ビジネス数学検定」のサンプル問題を見る限り,そのようなものは全く出てこない.せいぜい「回帰分析」くらいのものである.
思うに「ビジネス数学」は「高校数学+αの内容を復習するための方便」なのだ.「ビジネス数学検定一級」のサンプル問題の内容はまさに「数学IA」の「データの分析」の内容そのものである(ちょっとはみ出している部分もあるが).手計算だとしんどそうな問題も多いが,計算機(電卓でも可)が使える場面であれば,それほど問題にならないような問題が並んでいる.「大人のための数学検定」などと喧伝しているがその実態は「(高校数学を復習しているがそれを表に出すのが恥ずかしい)大人のための数学検定」ということなのであろう.まぁ,そもそも高校数学レベルが怪しいのに「数学を勉強し直そう」という人はかなり稀ではないかと思うので,需要としてもよくわからないが.
で,「高校数学+α」だけだと「ビジネスにどう役に立つか」が分かりづらいので,「統計でウソをつく法・実践編」を指南しているのではないだろうか?今後「ビジネス数学の資格を持っています」と言う人と相対するときは,「統計的誤謬を使うぞ」と警戒しながら話したほうが良さそうである.

関連する文献

目からうろこ 小学生の「さんすう」大疑問100
たった9時間でSPIの基礎が身につく!! <2021年度版>
統計でウソをつく法―数式を使わない統計学入門 (ブルーバックス)

そもそもあの本の構成自体が良くないという話

これは今回の騒動とは直接関係のない話であるが,たった9時間でSPIの基礎が身につく!! <2021年度版>という本自体,かなり出来が悪いように思われる.問題点として

  1. 出てくる概念の解説が短い(わかっている人用の解説しかない).
  2. 練習問題に対する解説がない(基本的に解答のみで,考え方などは例題に対してのみしか載っていない)
  3. 各章のサブタイトルと内容が対応していない(たとえば,「14, グラフと領域〜よく耳にする「見える化」っていったい何?〜」と書いてあるが,「見える化」について本文中に特に記述がない)

の3点が挙げられる.そもそも「計算が苦手なんです…は許されない!」とでかでかと書くなら題名を「計算問題集」にするべきである.

*1:ホテルの稼働率の評価をするのにこの折れ線グラフを持ってくるのはどうかと思うが.前年度の同時期との自己相関係数を調べて評価するのが妥当であろう.

*2: 確率の公理については 自然数全体から「同様に確からしく」自然数をランダムに選ぶことができないという話 - Sokratesさんの備忘録ないし雑記帳 に書いたことがある.

*3:「あくまで「◯通り」のうち「△通り」が確率であるという基礎概念」という謎の(誤った)概念を持ち出している.

*4:参考:https://www.j-platpat.inpit.go.jp/c1800/TR/JP-2019-027070/ABEDB0127E4B33BFC679A28BC9DC960A362D3691573F5C04257570ED4FD17310/40/ja

もしもあなたがインチキ数学本を出版したなら......

Twitter で次のようなアンケートを取った.


この記事ではこのクソアンケートの結果について述べる.

アンケートの背景

このクソアンケートを取った背景について述べる.

このクソアンケートは次の騒動がきっかけである.
togetter.com
「確率」についてご指摘いただきました|深沢真太郎 累計25万部/ビジネス数学教育家/数字に強い人材・組織をつくる専門家|note

ものすごくざっくりまとめると次のような騒動である.

  • 日本ビジネス数学協会の代表理事(以下H氏)の書いた本に誤りがあった
    • その誤りというのが小学生向けの啓蒙書 目からうろこ 小学生の「さんすう」大疑問100 に書いてあるレベルの誤りであった
      • 具体的には「『結婚できる』か『結婚できない』かという2通りのうちの1通りだから,結婚できる確率は1/2である」という「誠実な誤り」とは考えにくいものである
  • その本の著者は修士号(理学)を持っている
    • その割には上記が誤りであるという指摘が理解できていない
      • なんだったら「確率とは(事象の元の個数)/(全事象の元の個数)と常に定められる」と本気で思っている節がある
  • 著者本人が言うには「七年前」の本らしい
    • 上記のようなレベルの誤りが7年間も放置されていたという衝撃の事実
  • 日本ビジネス数学協会は,公益財団法人 日本数学検定協会(いわゆる数検を開催している団体)が発効する「ビジネス数学インストラクター」なる資格取得者の育成を行っている
    • 日本ビジネス数学協会の会員は,代表理事の書いた本にあのレベルの誤りがあったことを7年間も放置していたまたは気が付かなかったとでもいうのか?

問題点が多すぎる…….どこから突っ込めばよいのかわからない…….
この件についてはいつかどこかで別の記事にまとめようかとは思う.

ともかく,この件で次の事実に気がついてしまった.

あれ?! まともに数学するよりインチキでもいいから売れる本を書いたほうが生活が豊かになるのでは?!

はい,そんなわけでね,自分が闇落ちしたときのためのシミュレーションのためのアンケートです.こんなクソアンケートを取ったことについては後悔している.反省は特にしていない.

アンケートの質問文について

で,「『インチキ』と書いておけば,『誠実な誤り』ではないと通じるだろう」と思っていたのですが,「誠実な誤りだったらどうするんだ」という反応もあったので,その点については反省しています.ごめんなさい.
ただ結果を見る限り,そう読んだ方は回答者には少なかったようです.「誠実な誤り」をしていたなら,「無視」「ブロック」はしないでしょうからね…….
言い訳はするかもな.

アンケートの選択肢について

まぁ,そんな文脈のクソアンケートなので,選択肢は当然闇落ちマンの選択肢です.

  • 無視
  • ブロック
  • 言い訳(長文)
  • その他

という4つを用意し,二日間回答期間を設けました.
「その他」の回答についてはその具体的な内容をリプライで送ってもらうようにお願いしました.

アンケートの結果について

思っていたよりも多くの方が回答してくださり,最終的には352票集まりました.それぞれの選択肢についてコメントしたいと思います.

えっ?分析?そんなもんしねぇよ?クソアンケートだぞ?これを分析して何についての結果を得たいんだ?目的のない分析はしないです(目的のないアンケートをとったやつの言うことではない).

「無視」という選択肢

パーセンテージ的には一位にやはり来ましたね.まぁ,順当です.「インチキ数学本」で儲けようとしているわけですから,「内容に誤りがある!」と言ってくるやつは商売上の障害です.クレーマーなのです.仮に相手が正しかろうが関係ありません.
相手が何を言ってこようが無視が一番です.

亜種として

  • 「お忙しいところ,ご指摘ありがとうございます」といって何もしない

というものがありました.事実上の無視ですね.ここで「出版社と協議中です」と一言入れておくと,誠実に対応しているように見せられて完璧です!!

「ブロック」

「ブロック」は気持ちはわかりますがやりすぎかもしれません.ブロックは能動的な行為なので「攻撃」とみなされる恐れがあります.「ブロックしたということは故意にインチキ数学を広めようとしている!」などと騒がれて本の悪評を垂れ流されたらたまったもんではありません.

「ブロック」を使うのであれば,「自分は被害者」と演出をする必要があるでしょう.この場合同情した人が本を買ってくれるかもしれません.ただし,よほどうまく演出しないと,ボロがでてインチキがバレます.

または日頃から「ブロック」を乱発し,「え,おれブロックは呼吸だからよ」と演出をしておくのもベターです.そういう空気を作っておけば「ブロック」はあなたにとっては「呼吸」であって,「攻撃」ではありません.場合によっては「えー,なんかわかんないけどブロックされてるー」と勝手に潜在的な敵たちが宣伝に協力をしている可能性があります.まぁ,それで集まった人が本を買ってくれるとは思いませんが.

いずれにせよ「ブロック」は上級者向けの技です.おすすめはできないです.

「言い訳(長文)」

個人的にはこれが正解の選択肢でした.だって,傍から見たら一番面白いもん. 性格が悪い?すいません.
でも,長文でセンソーしてたらワクワクするだろ……?(普通はしないよ)

ただ,ビジネス的には下策です.長文の言い訳でわけがわからない状態にして言いくるめるというのはかなりの高等テクニックです.よほど話術に自身がない限り,とるべきではありません.
そもそも,「数学のプロ」というのは詭弁に敏感です*1.本気の数学のプロを彼らのホームグラウンドである「数学」において,言いくるめるのは至難の技です.

もちろん,言いくるめることができれば,リターンもでかいです.プロに勝ったんですから.それだけで宣伝になります.ハイリスクハイリターンの戦略です.

その他の答え

その他として寄せられた回答を紹介します.

  • 謝罪して訂正
    • 思っていたよりも多く寄せられました.人の道としては完全に正しいです. 悪いことをしたら謝る当然のこと.ビジネスとしては失敗するかもしれませんが,信用を得られます.一番幸福になれる道かもしれません.ただし,謝罪・訂正の仕方に注意しないと再燃焼してしまい,結果的に信用も失いかねないので,覚悟しましょう.
      • というかまともな学術者だったらこれ一択なんだよな.そもそもまともな学術者「インチキ本」は書かないか.うっかり「誤ったこと」を書くことはあるだろうが.
  • 小さなものであれば,次の版でしれっと訂正.大きなものであれば絶版にしてなかったことにする.
    • 「なかったことにする」はおもいつかなかった.たしか,正式に絶版するのは結構条件が厳しかったはずなので,そのへんは出版社が協力してくれるかによりそうですね.
  • 「私は0=1を仮定していますので問題はありません」
    • 嫌いじゃないよ
  • 被害者ムーヴ
    • ???「大学のセンセーがあたしをいぢめるんです!!!あたしを中傷したお前らを訴えてやる!!!!!」
  • 黒棺を完全詠唱する.
    • 「滲み出す混濁の紋章、不遜なる狂気の器、湧き上がり・否定し・痺れ・瞬き・眠りを妨げる 爬行(はこう)する鉄の王女、絶えず自壊する泥の人形、結合せよ、反発せよ、地に満ち 己の無力を知れ 破道の九十・黒棺」
  • 「さすがプロ!」って煽る
  • 「あなたのやってる数学と一緒にしないでください」
  • 「この本は正しいことしか書いてないなんて言ってません」
  • 「信じる方が悪い」
  • 「その調子で間違っているところ全部教えてください」
  • 「笑」
  • ゲーデル不完全性定理で数学は不完全だから」
    • これらすべて同一人物からの回答です.クソ回答7連発!!すごい!!!趣旨をわかっていやがる!!!!!と回答をもらった時点では無邪気に喜んでいたんですがね…….まさかあんなことになるとは…….

まさかの「正解」が出てしまった……

今回のアンケートで最大の誤算はまさかの正解が出てしまったことですよ……

「確率」についてご指摘いただきました|深沢真太郎 累計25万部/ビジネス数学教育家/数字に強い人材・組織をつくる専門家|note でこのアンケートのきっかけを作った H 氏は次のように述べています.

私は数学はひとつではなく、「◯◯数学」なるものがたくさん存在するといいなと思っています。そのどれが正しいか間違っているかということよりも、学ぶ側に様々な選択肢があることを豊かに思えるといいなと。

そう思って、(なかなか共感はされないかもしれませんが)私は私なりのビジネス数学を広めていこうと思っています。ビジネスの世界では絶対はなく正解もない。だから絶対も正解もない数学もあっていいのではと。

えーと,まとめると「あなたのやってる数学と一緒にしないでください」ってことでいいっすか.まさか「絶対も正解もない数学もあっていい」と言ってくるとは…….すくなくとも間違っている数学は使い物にならないと思うんですけどね.

そんなわけで.

「あなたのやってる数学と一緒にしないでください」を回答として提出した R くんの優勝です!!!
(アンケートで優勝とは)

総括

どうも H 氏は素でわけのわからんことを書いていた*2ようで「インチキ数学本」を出すつもりはなかったようですが,結果的にこのクソアンケートの回答にほぼ同じ回答がありまいました.かなしい事件だったね.

この記事の結論ですがこんなクソ記事読むより,みんな数学書を開こうぜでよろしくおねがいします.みんな闇落ちすんなよ!!!

参考文献など


子供の頃大好きで毎日持ち歩いていました.どこへ行くにも一緒でした.もしかしたら,わたしの原点はこの本かもしれません(その割に今この本が家のどこにあるか覚えていない).
ところで,この本,最近書店で見かけないのだが絶版になってしまったのだろうか……?

問題となった H 氏の本
たった9時間でSPIの基礎が身につく!! <2021年度版>

<追記 2021.3.4>
該当する書籍の内容についてお詫びと訂正について出版社と協議いたします。配信型授業の中で類似した内容の言及をしておりますので次回の配信にてお詫びと訂正をする予定です。自身の勉強不足により初学者向けの媒体で正しくない情報があったことに関しましては責任を感じております。ご迷惑をおかけしましたことをお詫び申し上げます。

「確率」についてご指摘いただきました|深沢真太郎 累計25万部/ビジネス数学教育家/数字に強い人材・組織をつくる専門家|note には書いてあるので手に入れるなら今のうちです.というか類似した内容の言及を最近もしているなら「7年前」って言わなければいいのに…….
「7年前のミスにガタガタ言いやがって…….面倒な連中だな…….」と受け取れるぞ.単に「私の著作にミスがあったようです.事実関係の確認をした後,対応させていただきます.この度はお騒がせして申し訳ありません」と言うのがビジネス的には正解だろうよ…….

*1:まぁ,数学から離れたら,そうでもないことも多い節はありますが.

*2:なんで,そんなやつがビジネス数学インストラクター制度を立ち上げることができたのかは完全に謎.

証明図の後に句読点を打ちたい話(bussproofs.sty)

最近まで知らなかった話。公式ドキュメントをしっかり読んだら一瞬で解決して心が痛くなった話とも言う.


LaTeX で証明図を書くのに普段 bussproofs.sty を使っているが,証明図の後に句読点を打とうとするとうまく行かなかった.

The introduction rule of \(\land\) is
\begin{prooftree}
\AxiomC{$A$}
\AxiomC{$B$}
\BinaryInfC{$A\land B$}
\end{prooftree}.

The introduction rule of \(\land\) is
\begin{prooftree}
\AxiomC{$A$}
\AxiomC{$B$}
\BinaryInfC{$A\land B$}
\end{prooftree}.

で,最近まで荒技*1でこの問題を解決していたのだが,最近,公式ドキュメントをよく読んだら一瞬で解決した.
prooftree 環境でしか,証明図を書けないと思い込んでいたが,実は \DisplayProof というコマンドがあるらしく,これを使うとインライン数式モードのように証明図をかけるらしい.

The introduction rule of \(\land\) is

\AxiomC{$A$}
\AxiomC{$B$}
\BinaryInfC{$A\land B$}
\DisplayProof.

MathJaX だと再現できないので画像を貼る.

f:id:Sokrates7Chaos:20210301173952p:plain

正直知らんかったので,反省と備忘録を兼ねてここに掲載する(つらたん).

*1:tabular などを使って句読点の位置を無理矢理調節するなどしたと容疑者は述べており…….

SATySFi インストールチャレンジ in Windows Subsystem for Linux

Windows Subsystem for Linux に SATySFi をインストールをする機会がここ数週間の間になぜか複数回あった.この記事はそれらの経験からわかった Windows Subsystem for Linux に SATySFi をインストールをする方法をまとめたものである.

たぶんこれが一番早いと思います*1

問題の背景

SATySFi とは組版処理システムの一種で,諏訪敬之しによって,IPA の未踏IT人材発掘・育成事業(2017)の支援の下に開発された.SATySFiは静的型付けにより,組版処理の前段階での詳細でわかりやすいエラー報告を実現しているらしい[要出典]。SATySFi はその高性能さと並んで,インストールがパソコン初心者には難しいことでも知られている[要出典].

Windows Subsystem for Linux (以下 WSL )とは Windows の中でサーバー版 Linux (に限りなく近いもの)を動かそうという意欲的なシステムで,Micrsoft vs Linux という冷戦の雪解けの象徴である[とても要出典].ディストリビューションについては UbuntuDebian など複数与えられている.

この記事では WSLを使えるようにしてから,SATySFi をインストールするまでの最短経路(たぶん)を紹介する.

Windows Subsystem for Linux を使えるようにする.

WSL を使えるようにする.この工程は大きく分けて2つある.

  1. WSL を使用できるように設定を変える.
  2. ディストリビューションを決める.

これは基本的には公式ドキュメント Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs の「手動インストール」にしたがえば何とかなる*2

しかし,ここでは公式ドキュメントとは違い GUI で済ませられるところは GUI で済ませる方針で行く*3

WSL を使用できるように設定を変える.

Windows の機能の有効化または無効化 というところから WSL を使用できるように設定を変えることができる.
方法は

  1. 「設定」をスタートメニューなどから開く.
  2. Windows の機能の有効化または無効化 を検索窓から検索する.
  3. 立ち上がったウィンドウのなかのチェックボックスから「LinuxWindows サブシステム」にチェックを入れる.もし,この時点でそもそもそのような項目が見つからなかった場合,Windows のバージョンが足りていない可能性が高い*4
  4. 再起動する.

ディストリビューションを決めてダウンロードする.

ディストリビューションMicrosoft Store から好きなディストリビューションをダウンロードする.

私が試したのは UbuntuDebian のみなので,この記事の方法に従う場合は,そのどちらかを選ぶのを推奨する.

ディストリビューションのインストールが完了すると,スタートメニューにそのディストリビューションのアイコンが現れる.そのアイコンをクリックすれば,WSL が立ち上がる.初回はユーザー名とパスワードを求められるので,適当に入力してしまおう.

SATySFi インストールチャレンジ in Windows Subsystem for Linux

WSL が使えるようになったら,いよいよ SATySFi インストールチャレンジの開始である.
本来は WSL 2 を使うことを推奨されているが,WSL 1 でも動くので,この記事では WSL 1 で動かすことを考える.WSL 2 から Windows 側のファイルを編集することが非推奨とされていることを考えると,WSL 1 で動かせる限りは WSL 1 で動かしたほうが良いという発想である.とはいえ,おそらく WSL 2 でもほぼ同じ方法(一か所だけ異なる)でインストールができると考えられるので,WSL 2 を使う人にとって,この記事が全く役に立たないことはないはずである.

以下では,UbuntuDebian をインストールしたとして話を進める.

SATySFi のインストールに必要なツールのダウンロード

まず,SATySFi のインストールに必要なツールのダウンロードを行う.次のコマンドを入力する.

sudo apt update
sudo apt install build-essential git m4 unzip curl  make wget opam 

最初のコマンドの実行時にパスワードの入力を求められるはずなので,WSL を最初に立ち上げたときに決めたパスワードを入力する.

公式ドキュメント GitHub - gfngfn/SATySFi: A statically-typed, functional typesetting system だと Opam を違う方法でインストールしているが,現在の UbuntuDebian では apt から手に入れたほうが早いのでそうする.

Opam を設定する(鬼門)

ここが最大の鬼門である.

Opam というのは OCaml のパッケージマネージャである.SATySFi は大部分*5OCaml によって書かれているために Opam が必要である.

しかし,WSL 勢にはこの Opam の設定が難しい.だって,公式ドキュメント通りにやってもうまくいかないのだもの.しかもエラーを見てもいまいちなぜだめなのかよくわからない.

どうも原因は WSL 1 では bwrap によるサンドボックスが上手く動かないことにあるらしい*6.WSL 2 では解決した問題らしいが,ここではあくまでも WSL 1 で頑張ることにする.

先に述べた理由から,Opam のインストールが終わったらその初期設定を

opam init --comp 4.10.0 --disable-sandboxing

というコマンドによって行う.最後のオプションはサンドボックスを切るためのオプションである*7.SATySFi は 2021 年 2 月 4 日現在,OCaml 4.10.0 を使うことを求められているので,--comp 4.10.0 をつける(これを外すと古いバージョンがインストールされてしまうので必須).

このコマンドの実行中いくつか入力を求められるがよくわからない場合はすべて y を選択すればよい.

その後

eval $(opam env)

opam repository add satysfi-external https://github.com/gfngfn/satysfi-external-repo.git
opam update

を実行して,SATySFi をインストールできる状態にする.

Opam の設定がうまくいかなかったら

この時点で,

ocaml --version

を実行して

The OCaml toplevel, version 4.10.0

と表示されなかったら,どこかでミスをしている.

この場合はあまり良い方法ではないと思うが,

rm -rf ~/.opam

して opam 関連の諸々を初期化し,この節の最初からやり直しである.

この方法だと,opam 関連のファイルごとすべて吹っ飛ばしているので,他のことに opam を使っている人は使えない方法であるが,この記事に救いを求める人にそういった人はいないと考えられるので気にしないことにする*8

SATySFi をインストールする

ここから先は一か所を除いて,公式ドキュメント通りに進めれば,上手くいく.

まず,

git clone https://github.com/gfngfn/SATySFi.git

または

git clone git@github.com:gfngfn/SATySFi.git

をして,GitHub に公開されている SATySFi のレポジトリをクローンする.Git を初めて使う人は前者を使えばよい*9

クローンしてきた SATySFi というディレクトリに

cd SATySFi

して入る.そして,

opam pin add satysfi .
opam install satysfi

をすると,SATySFi が build される.

ここまでで,SATySFi はインストールされているわけだが,使い始める前に

./download-fonts.sh
sudo ./install-libs.sh

をしてほしいそうなのでそうする.ただし,後者のスクリプトは sudo 権限がないと触れないディレクトリを触るので,公式ドキュメントには書いていないが,sudo 権限で実行する*10

demo が動くか確認する.

ここまで来たらほぼ勝利も同然であるが,勝利したことの確認のため demo を動かしてみる.

cd demo
make
ls 

をして, demo.pdf が生成されていることを確認できれば勝利確定である.

まとめ

WSL 1 勢が気を付けなければならないのは

  • opam init するとき, --comp 4.10.0 --disable-sandboxing というオプションを忘れないこと.


である.SATySFi インストールチャレンジ成功者が一人でも多く増えることを望む.

*1:使うディストリビューションUbuntuDebian を仮定する.

*2:公式ドキュメントが分かりにくいのはある.

*3:画面のスクリーンショットは撮るの忘れた.すいません.

*4:Windows 10 のダウンロード から Update Assistant をダウンロードし,最新版の Windows を手に入れよう.

*5:というか GitHub の言語の割合を見る限り全部 OCaml と考えられる.

*6:ごめんなさい.ここはわからないまましゃべっている.詳しいことは *nix 向け SATySFi インストールバトル手引き 2020年10月版 - Qiitabuild ocaml-base-compiler fails on versions 4.02-4.08 (`opam switch create . 4.06.1`) · Issue #12050 · ocaml/opam-repository · GitHub を参照してほしい.

*7: WSL 2 を使っている人にはおそらく必要のないオプション.

*8:居たらごめんなさい.

*9:最近は http を使って Git Hub にアクセスすることは非推奨らしいが

*10:こっちはエラーをよく読むとエラーの理由がすぐわかるので,比較的解決しやすい.

Windows Subsystem for Linux で Texdoc を使いたいというおはなし

Windows Subsystem for Linux (以下WSL)でTexdoc を使うための方法についての記事です.
元々はLaTeX 初心者が知るべきただ一つのコマンド - Sokratesさんの備忘録ないし雑記帳という記事のおまけにしていたのですが,分量的に分けたほうが良いと判断したので,別記事にします.

1. WSL で Texdoc を使えないんだけどォォォォォォ!!!

WSL ユーザーという原罪のため,Texdoc が使えないかわいそうな皆さん.こんばんは.私もそんな人間の一人です.私かわいそう.

WSL でたとえば,

$ texdoc texdoc

を実行すると

texdoc warning: DISPLAY is not set; your viewer will likely have problems.
texdoc warning: Try --list to list results instead of displaying them.

などと表示されブチ切れる羽目になります.これは残念ながら現状 WSL に対して,GUI はサポートされていないからだと考えられます*1.そのため,WSL 側から Windows の pdf viewer などを呼び出すように設定の変更をするしかありません*2.「おっ,なら設定ファイルを書き直せばいいんだな」と思われるかもしれませんが,ある事情から少し工夫をしないと,WSL の Texdoc と Windows の pdf viewer を連携させることができません.ここでは,その方法を紹介します.
基本的には下記のリンク先の方法と同じですが,一部私の工夫が入っています.
"DISPLAY is not set; your viewer will likely have problems" on Windows Subsystem for Linux · Issue #59 · TeX-Live/texdoc · GitHub

私程度が読むようなドキュメントは pdf であることが多いため,pdf を読むための方法しか紹介しませんが,ご了承ください.
ただし,ここに書いてあるようなスクリプトをファイルの種類ごとに書いて,viewer として設定すればうまくいくとは思います*3

おそらく,この方法はディストリビューションなどに依存しないと考えられますが,動作確認は

  • エディション Windows 10 Home
  • バージョン 20H2
  • OS ビルド 19042.685

の中で WSL 2 の ubuntu-20.04 で行っています.
また,TeX Live の バージョンは 2019.20200218-1 です.

2. 方法の紹介の前の注意

あらかじめ申し上げますが,ここで紹介する方法で Texdoc から pdf ファイルを読めるようになっても Texdoc からの

texdoc warning: DISPLAY is not set; your viewer will likely have problems.
texdoc warning: Try --list to list results instead of displaying them.

というメッセージはナント消えません!バカな!そこをご了承の上で下記の方法を試してみてください.
また,わたしが普段使う pdf viewer が Sumatra PDF なので,例として,SumatraPDF を呼び出すように書いています.それ以外の pdf viewer を使いたい人々は適時そこを読み替えてお読みください.

3. WSL から Texdoc を呼び出すそんなに冴えているわけでもないやり方

ステップ 1.

pdf viewer を呼び出すための bash スクリプト*4を書きます(なぜそんな面倒なことをするのかは後で補足します).
次のような bashスクリプトを openpdf という名前*5で WSL の path が通っている場所に置きます*6
GitHub - Sokratesnil/wsl-scripts に同じスクリプトを置いてあるので,そちらからダウンロードしても構いません.

#!/bin/sh
for file in "$@"
do
  pathinwsl=`realpath $file`
  pathinwindows=`wslpath -w $pathinwsl`
  SumatraPDF.exe "$pathinwindows" &
done

この bash スクリプトの SumatraPDF.exe を他の好きな pdf viewer の実行ファイルに置き換えれば,その pdf viewer で texdoc が探してきた pdf ドキュメントを読めるはずです.たぶん. 2021/1/6 追記.実際,chrome.exe に置き換えることで Google Chrome で pdf の閲覧ができました.

openpdf を作ったら

$ chmod +x openpdf

とコマンドを実行して,実行者権限を付与してください.

ステップ 2.

Texdoc の設定ファイルを書きます.
Texdoc の設定ファイルを置く場所は

$ texdoc -f

を実行すると分かります.わたしの場合は

/usr/share/texlive/texmf-dist/scripts/texdoc/texdoclib.tlu 3.0
Configuration files are:
    active      /usr/share/texlive/texmf-dist/texdoc/texdoc.cnf
Recommended file(s) for personal settings:
    /home/xxx/texmf/texdoc/texdoc.cnf

などと表示されたので,/home/xxx/texmf/texdoc/ に設定ファイル texdoc.cnf を用意すれば良いことが分かります.もし,存在しないディレクトリなどが途中にあった場合は適時 mkdir texmf などを実行して,ディレクトリを作ってください.

さて,texdoc.cnf に次の一行を書きます.

viewer_pdf=openpdf

これは Texdoc の pdf viewer を指定しています.

ステップ 3. 最後に

$ texdoc texdoc

を実行してみて,エラーが出つつも pdf viewer が立ち上がり,Texdoc の公式ドキュメントを読むことができれば成功です.他のドキュメントも立ち上げてみましょう.

なぜこんな回りくどい方法を......

ここで紹介する方法は一見すると回り道に見えるかもしれません.普通に考えると,

viewer_pdf=SumatraPDF.exe

とすればうまくいきそうなのですが,読みたいドキュメントまでの path の指定が wsl と texdoc で食い違いが発生するようで,うまくドキュメントを開くことができません(かなしい). openpdf はその問題を解決するために path の変換をしてから pdf viewer に pdf ファイルを渡すようにしています.

"DISPLAY is not set; your viewer will likely have problems" on Windows Subsystem for Linux · Issue #59 · TeX-Live/texdoc · GitHub の方法(以下元ネタ)との違いと私の方法の違いも述べておきます(以下の二段落は興味のある方だけお読みください).
元ネタと私の方法は wsl と texdoc の path の食い違いを補正するという点は共通しています.問題は呼び出すアプリの違いです.元ネタの方法だと powershell.exe を呼び出すようにしています.しかし,これでは動作が重くなります.powershell.exe という重いソフトウェアを呼び出さない分によってわずかですが,動作が軽くなっています.
一方,元ネタのスクリプトだと,texdoc に呼び出されるファイルの拡張子に Windows 側で関連付けられているソフトウェアを呼び出すようになっているという利点があります.そのため,pdf 以外のドキュメントにもバリバリ目を通したい方は,もしかすると元のスクリプトを使ったほうが良いのかもしれません.

最後に

 このバグ(?)は WSL の GUI サポートが開始されれば解消されると予想されるため,texdoc 側で対応する予定はまったくないそうです(以下のリンクを参照).しょうがないね.
https://github.com/TeX-Live/texdoc/issues/59?s=09#issuecomment-720107960

*1:WSL の GUI については,サードパーティ製のものが存在するそうですが,私は使ったことありません.もし,そういう製品を使ったらここに書いてあるような問題は起こらないのかもしれないですが,どうなんですかね.よくわからない.

*2:または,WSL から Texdoc を立ち上げることを諦めて,Windows 側にTeX Live を入れるかです.昔の私のように(わたしかわいそう).

*3:試してないですが.

*4:実は以前あげていたものと少し変えています.WSL の Texdoc を使う分には以前のもので十分なのですが,たとえば,以前のバージョンの openpdf で Windows 下の pdf ファイルを開こうとすると,開くことができません.これは,以前のバージョンでは SumatraPDF.exe に渡す path の変換を WSL に任せてしまっているためです.汎用性を上げるために SumatraPDF.exe に渡す path を明示的に変換するように変更しました.

*5:名前は他のものでも良いですが,わかりやすい名前にした方が良いと考えます.

*6:ちなみに,動作確認の際は~/bin/openpdf としました.