見出し画像

noteでTeX記法を用いて作表する方法(覚え書き)【その3】

(覚え書き【その2】から続く)


初めに

作成目標

 このnote記事(覚え書き【その3】)では、厚生労働省ホームページ『令和7年3月1日に「大麻取締法及び麻薬及び向精神薬取締法の一部を改正する法律」の一部が施行されます』に掲載されているPDFファイル「法律新旧対照条文」中の

  • 大麻取締法(昭和二十三年法律第百二十四号)(抄)(第一条関係)【公布の日から起算して一年を超えない範囲内において政令で定める日施行】

という長い題名の表をTeX記法で作ることを目標にする。ただし、この表はA4判サイズのPDFファイルで16ページもある大きな表なので、「第一章 総則」の最後まで(最初の2ページ分)を作ることを目指す。
 表の題名が長すぎるので、以下では「大麻取締法の表」と略記する。


参考ページ

 KaTeX公式ページの「Supported Functions」は、以下では [SF] と略記する。

KaTeX公式ページ「Supported Functions」
(https://katex.org/docs/supported.html)





大麻取締法の表

 この表は、覚え書き【その2】の表に比べて格段に大きく複雑な表だが、TeX記法による作表の基礎を【その2】で徹底的に調べておいたので、ひととおり作表するのに要する時間は【その2】よりもはるかに短く済んだ。正確には計測していないが、感覚的には五分の一ぐらいだろうか。
 ただ、TeX記法の機能を隅々まで追究しながら解説を書いたので、解説を書くのに要する時間は【その2】とあまり変わらなかった。

$$
\newcommand\ul[1]{\underline{#1}}

\newcommand\zwah{\phantom{ア}}
\newcommand\zwkah{\phantom{あいうえおカ}}
\newcommand\zwku{\phantom{あいうえおかきく}}
\newcommand\zwchi{\phantom{あいうえおかきくけこさしすせそたち}}
\newcommand\zwkok{\phantom{あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやヤイゆヤエよわゐワウゑをアイウエオカキクケコ}}

\newcommand\baselineskipe{\vphantom{\begin{array}{l}あ\\い\\う\\え\\\end{array}}\\}
\newcommand\baselineskipku{\vphantom{\begin{array}{l}あ\\い\\う\\え\\お\\か\\き\\く\\\end{array}}\\}
\newcommand\baselineskipta{\vphantom{\begin{array}{l}あ\\い\\う\\え\\お\\か\\き\\く\\け\\こ\\さ\\し\\す\\せ\\そ\\た\\\end{array}}\\}

\newcommand\arraystretch{1.5}
\footnotesize

\begin{align*}
&\textsf{◯ 大麻取締法(昭和二十三年法律第百二十四号)(抄)(第一条関係)}\\
&\textsf{ 【公布の日から起算して一年を超えない範囲内において政令で定める日施行】}\\
&\textsf{\zwkok(傍線部分は改正部分)}\\
&\begin{array}{|l|l|}

\hline

\begin{array}{l}
\textsf{\zwkah改\zwku正\zwku案\zwkah}\\
\end{array}&

\begin{array}{l}
\textsf{\zwkah現\zwchi行\zwkah}\\
\end{array}\\

\hline

\begin{array}{l}
\textsf{   \ul{大麻草の栽培の規制に関する法律}}\\
\\
\textsf{\ul{目次}}\\
\textsf{ \ul{第一章} \ul{総則(第一条―第四条)}}\\
\textsf{ \ul{第二章} \ul{大麻草採取栽培者(第五条―第十二条の五)}}\\
\textsf{ \ul{第三章} \ul{大麻草研究栽培者(第十三条―第十七条)}}\\
\textsf{ \ul{第四章} \ul{監督(第十八条―第二十一条)}}\\
\textsf{ \ul{第五章} \ul{雑則(第二十二条―第二十三条)}}\\
\textsf{ \ul{第六章} \ul{罰則(第二十四条―第二十八条)}}\\
\textsf{ \ul{附則}}\\
\\
\textsf{   第一章 総則}\\
\\
\textsf{\ul{第一条} \ul{この法律は、大麻草の栽培の適正を図るために必要な規制}}\\
\textsf{ \ul{を行うことにより、麻薬及び向精神薬取締法(昭和二十八年法律}}\\
\textsf{ \ul{第十四号)と相まつて、大麻の濫用による保健衛生上の危害を防}}\\
\textsf{ \ul{止し、もつて公共の福祉に寄与することを目的とする。}}\\
\\
\textsf{第二条 \ul{この法律で「大麻草」とは、カンナビス・サティバ・リン}}\\
\textsf{ \ul{ネをいう。}}\\
\textsf{\ul{2} \ul{この法律で「大麻」とは、大麻草(その種子及び成熟した茎を}}\\
\textsf{ \ul{除く。)\zwah及びその製品(大麻草としての形状を有しないものを除}}\\
\textsf{ \ul{く。)\zwahをいう。}}\\
\textsf{\ul{3} この法律で「\ul{大麻草栽培者}」とは、\ul{大麻草採取栽培者及び大麻}}\\
\textsf{ \ul{草研究栽培者}をいう。}\\
\textsf{\ul{4} この法律で「\ul{大麻草採取栽培者}」とは、\ul{第五条第一項の規定に}}\\
\textsf{ \ul{より}都道府県知事の免許を受けて、\ul{種子又は繊維}を採取する目的}\\
\textsf{ で、大麻草を栽培する者をいう。}\\
\textsf{\ul{5} この法律で「\ul{大麻草研究栽培者}」とは、\ul{第十三条第一項の規定}}\\
\textsf{ \ul{により厚生労働大臣}の免許を受けて\ul{、大麻草}を研究する目的で\ul{、}}\\
\textsf{ \ul{大麻草を栽培する}者をいう。}\\
\\
\textsf{\ul{第三条} \ul{大麻草栽培者でなければ大麻草を栽培してはならない。}}\\
\baselineskipe
\textsf{\ul{第四条} \ul{削除}}\\
\baselineskipta
\textsf{   \ul{第二章} \ul{大麻草採取栽培者}}\\
\\
\end{array}&

\begin{array}{l}
\textsf{   \ul{大麻取締法}}\\
\\
\textsf{(新設)}\\
\baselineskipku
\textsf{   第一章 総則} \\
\\
\textsf{\ul{第一条} \ul{この法律で「大麻」とは、大麻草(カンナビス・サティバ}}\\
\textsf{ \ul{・エル)及びその製品をいう。ただし、大麻草の成熟した茎及び}}\\
\textsf{ \ul{その製品(樹脂を除く。)\zwah並びに大麻草の種子及びその製品を除}}\\
\textsf{ \ul{く。}}\\
\\
\textsf{第二条 (新設)}\\
\\
\textsf{(新設)}\\
\\
\\
\textsf{  この法律で「\ul{大麻取扱者}」とは、\ul{大麻栽培者及び大麻研究者}を}\\
\textsf{ いう。}\\
\textsf{\ul{2} この法律で「\ul{大麻栽培者}」とは、都道府県知事の免許を受けて}\\
\textsf{ 、\ul{繊維若しくは種子}を採取する目的で、大麻草を栽培する者をい}\\
\textsf{ う。}\\
\textsf{\ul{3} この法律で「\ul{大麻研究者}」とは、\ul{都道府県知事}の免許を受けて}\\
\textsf{ \ul{、大麻}を研究する目的で\ul{大麻草を栽培し、又は大麻を使用する}者}\\
\textsf{ をいう。}\\
\\
\textsf{\ul{第三条} \ul{大麻取扱者でなければ大麻を所持し、栽培し、譲り受け、}}\\
\textsf{ \ul{譲り渡し、又は研究のため使用してはならない。}}\\
\textsf{\ul{2} \ul{この法律の規定により大麻を所持することができる者は、大麻}}\\
\textsf{ \ul{をその所持する目的以外の目的に使用してはならない。}}\\
\\
\textsf{\ul{第四条} \ul{何人も次に掲げる行為をしてはならない。}}\\
\textsf{ \ul{一} \ul{大麻を輸入し、又は輸出すること(大麻研究者が、厚生労働}}\\
\textsf{  \ul{大臣の許可を受けて、大麻を輸入し、又は輸出する場合を除く}}\\
\textsf{  \ul{。)\zwah。}}\\
\textsf{ \ul{二} \ul{大麻から製造された医薬品を施用し、又は施用のため交付す}}\\
\textsf{  \ul{ること。}}\\
\textsf{ \ul{三} \ul{大麻から製造された医薬品の施用を受けること。}}\\
\textsf{ \ul{四} \ul{医事若しくは薬事又は自然科学に関する記事を掲載する医薬}}\\
\textsf{  \ul{関係者等(医薬関係者又は自然科学に関する研究に従事する者}}\\
\textsf{  \ul{をいう。以下この号において同じ。)\zwah向けの新聞又は雑誌によ}}\\
\textsf{  \ul{り行う場合その他主として医薬関係者等を対象として行う場合}}\\
\textsf{  \ul{のほか、大麻に関する広告を行うこと。}} \\
\textsf{\ul{2} \ul{前項第一号の規定による大麻の輸入又は輸出の許可を受けよう}}\\
\textsf{ \ul{とする大麻研究者は、厚生労働省令で定めるところにより、その}}\\
\textsf{ \ul{研究に従事する施設の所在地の都道府県知事を経由して厚生労働}}\\
\textsf{ \ul{大臣に申請書を提出しなければならない。}}\\
\\
\textsf{   \ul{第二章} \ul{免許}}\\
\\
\end{array}

\end{array}
\end{align*}
$$



TeX記法のコードと解説

$$
\newcommand\ul[1]{\underline{#1}}  ←<1>

\newcommand\zwah{\phantom{ア}}  ←<2>, <3>
\newcommand\zwkah{\phantom{あいうえおカ}}
\newcommand\zwku{\phantom{あいうえおかきく}}
\newcommand\zwchi{\phantom{あいうえおかきくけこさしすせそたち}}
\newcommand\zwkok{\phantom{あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやヤイゆヤエよわゐワウゑをアイウエオカキクケコ}}

\newcommand\baselineskipe{\vphantom{\begin{array}{l}あ\\い\\う\\え\\\end{array}}\\}  ←<4>
\newcommand\baselineskipku{\vphantom{\begin{array}{l}あ\\い\\う\\え\\お\\か\\き\\く\\\end{array}}\\}
\newcommand\baselineskipta{\vphantom{\begin{array}{l}あ\\い\\う\\え\\お\\か\\き\\く\\け\\こ\\さ\\し\\す\\せ\\そ\\た\\\end{array}}\\}

\newcommand\arraystretch{1.5}  ←<5>
\footnotesize

\begin{align*}  ←<6>
&\textsf{◯ 大麻取締法(昭和二十三年法律第百二十四号)(抄)(第一条関係)}\\  ←<7>
&\textsf{ 【公布の日から起算して一年を超えない範囲内において政令で定める日施行】}\\
&\textsf{\zwkok(傍線部分は改正部分)}\\  ←<A>
&\begin{array}{|l|l|}

\hline

\begin{array}{l}
\textsf{\zwkah改\zwku正\zwku案\zwkah}\\  ←<B>
\end{array}&

\begin{array}{l}
\textsf{\zwkah現\zwchi行\zwkah}\\  ←<C>
\end{array}\\

\hline

\begin{array}{l}
\textsf{   \ul{大麻草の栽培の規制に関する法律}}\\
\\
\textsf{\ul{目次}}\\
\textsf{ \ul{第一章} \ul{総則(第一条―第四条)}}\\
\textsf{ \ul{第二章} \ul{大麻草採取栽培者(第五条―第十二条の五)}}\\
\textsf{ \ul{第三章} \ul{大麻草研究栽培者(第十三条―第十七条)}}\\
\textsf{ \ul{第四章} \ul{監督(第十八条―第二十一条)}}\\
\textsf{ \ul{第五章} \ul{雑則(第二十二条―第二十三条)}}\\
\textsf{ \ul{第六章} \ul{罰則(第二十四条―第二十八条)}}\\
\textsf{ \ul{附則}}\\
\\
\textsf{   第一章 総則}\\
\\
\textsf{\ul{第一条} \ul{この法律は、大麻草の栽培の適正を図るために必要な規制}}\\  ←<8>
\textsf{ \ul{を行うことにより、麻薬及び向精神薬取締法(昭和二十八年法律}}\\  ←<9>
\textsf{ \ul{第十四号)と相まつて、大麻の濫用による保健衛生上の危害を防}}\\
\textsf{ \ul{止し、もつて公共の福祉に寄与することを目的とする。}}\\
\\
\textsf{第二条 \ul{この法律で「大麻草」とは、カンナビス・サティバ・リン}}\\
\textsf{ \ul{ネをいう。}}\\
\textsf{\ul{2} \ul{この法律で「大麻」とは、大麻草(その種子及び成熟した茎を}}\\
\textsf{ \ul{除く。)\zwah及びその製品(大麻草としての形状を有しないものを除}}\\  ←<D>
\textsf{ \ul{く。)\zwahをいう。}}\\  ←<E>
\textsf{\ul{3} この法律で「\ul{大麻草栽培者}」とは、\ul{大麻草採取栽培者及び大麻}}\\
\textsf{ \ul{草研究栽培者}をいう。}\\
\textsf{\ul{4} この法律で「\ul{大麻草採取栽培者}」とは、\ul{第五条第一項の規定に}}\\
\textsf{ \ul{より}都道府県知事の免許を受けて、\ul{種子又は繊維}を採取する目的}\\
\textsf{ で、大麻草を栽培する者をいう。}\\
\textsf{\ul{5} この法律で「\ul{大麻草研究栽培者}」とは、\ul{第十三条第一項の規定}}\\
\textsf{ \ul{により厚生労働大臣}の免許を受けて\ul{、大麻草}を研究する目的で\ul{、}}\\
\textsf{ \ul{大麻草を栽培する}者をいう。}\\
\\
\textsf{\ul{第三条} \ul{大麻草栽培者でなければ大麻草を栽培してはならない。}}\\
\baselineskipe  ←<F>
\textsf{\ul{第四条} \ul{削除}}\\
\baselineskipta  ←<G>
\textsf{   \ul{第二章} \ul{大麻草採取栽培者}}\\
\\
\end{array}&

\begin{array}{l}
\textsf{   \ul{大麻取締法}}\\
\\
\textsf{(新設)}\\
\baselineskipku  ←<H>
\textsf{   第一章 総則} \\
\\
\textsf{\ul{第一条} \ul{この法律で「大麻」とは、大麻草(カンナビス・サティバ}}\\
\textsf{ \ul{・エル)及びその製品をいう。ただし、大麻草の成熟した茎及び}}\\
\textsf{ \ul{その製品(樹脂を除く。)\zwah並びに大麻草の種子及びその製品を除}}\\  ←<I>
\textsf{ \ul{く。}}\\
\\
\textsf{第二条 (新設)}\\
\\
\textsf{(新設)}\\
\\
\\
\textsf{  この法律で「\ul{大麻取扱者}」とは、\ul{大麻栽培者及び大麻研究者}を}\\
\textsf{ いう。}\\
\textsf{\ul{2} この法律で「\ul{大麻栽培者}」とは、都道府県知事の免許を受けて}\\
\textsf{ 、\ul{繊維若しくは種子}を採取する目的で、大麻草を栽培する者をい}\\
\textsf{ う。}\\
\textsf{\ul{3} この法律で「\ul{大麻研究者}」とは、\ul{都道府県知事}の免許を受けて}\\
\textsf{ \ul{、大麻}を研究する目的で\ul{大麻草を栽培し、又は大麻を使用する}者}\\
\textsf{ をいう。}\\
\\
\textsf{\ul{第三条} \ul{大麻取扱者でなければ大麻を所持し、栽培し、譲り受け、}}\\
\textsf{ \ul{譲り渡し、又は研究のため使用してはならない。}}\\
\textsf{\ul{2} \ul{この法律の規定により大麻を所持することができる者は、大麻}}\\
\textsf{ \ul{をその所持する目的以外の目的に使用してはならない。}}\\
\\
\textsf{\ul{第四条} \ul{何人も次に掲げる行為をしてはならない。}}\\
\textsf{ \ul{一} \ul{大麻を輸入し、又は輸出すること(大麻研究者が、厚生労働}}\\
\textsf{  \ul{大臣の許可を受けて、大麻を輸入し、又は輸出する場合を除く}}\\
\textsf{  \ul{。)\zwah。}}\\  ←<J>
\textsf{ \ul{二} \ul{大麻から製造された医薬品を施用し、又は施用のため交付す}}\\
\textsf{  \ul{ること。}}\\
\textsf{ \ul{三} \ul{大麻から製造された医薬品の施用を受けること。}}\\
\textsf{ \ul{四} \ul{医事若しくは薬事又は自然科学に関する記事を掲載する医薬}}\\
\textsf{  \ul{関係者等(医薬関係者又は自然科学に関する研究に従事する者}}\\
\textsf{  \ul{をいう。以下この号において同じ。)\zwah向けの新聞又は雑誌によ}}\\  ←<K>
\textsf{  \ul{り行う場合その他主として医薬関係者等を対象として行う場合}}\\
\textsf{  \ul{のほか、大麻に関する広告を行うこと。}} \\
\textsf{\ul{2} \ul{前項第一号の規定による大麻の輸入又は輸出の許可を受けよう}}\\
\textsf{ \ul{とする大麻研究者は、厚生労働省令で定めるところにより、その}}\\
\textsf{ \ul{研究に従事する施設の所在地の都道府県知事を経由して厚生労働}}\\
\textsf{ \ul{大臣に申請書を提出しなければならない。}}\\
\\
\textsf{   \ul{第二章} \ul{免許}}\\
\\
\end{array}

\end{array}
\end{align*}
$$  ←<10>


<1> コマンド名の短縮(マクロ定義コマンドの応用1)

  • 「大麻取締法」の表では、あちこちの文字に「\underline」コマンドを用いて下線を引く必要があるのだが、PDFファイル「法律新旧対照条文」とTeX記法のコードとを見比べて確認する際に「\underline」の文字が邪魔に感じられたので、「\underline」と機能が同じで名前が短い新コマンド「\ul」を定義した。

  • 「\newcommand\ul」の直後の「[1]」は新コマンドのひきすうの個数を表し、「#1」は新コマンドの第1引数が元のコマンドのどこの引数にあたるかを表す。この定義により、コード中の「\ul{……}」が「\underline{……}」に読み替えられる。

  • 覚え書き【その2】で、「\\」を「\newline」に書き換える方法を提案したが、もしも「\newline」の文字が邪魔に感じられるようなら、「\ul」の定義と同じ方法で「\newline」を「\nl」といった短い新コマンドに置き換えることができる。各行末の「\newline」が邪魔に感じられるかどうかは、個人差もあるだろうし、画面の横幅などの執筆環境にもよるだろう。

  • 〔参考1〕\ul と \newline を用いて記述したコード:

\textsf{第二条 \ul{この法律で「大麻草」とは、カンナビス・サティバ・リン}}\newline
\textsf{ \ul{ネをいう。}}\newline
\textsf{\ul{2} \ul{この法律で「大麻」とは、大麻草(その種子及び成熟した茎を}}\newline
\textsf{ \ul{除く。)\zwah及びその製品(大麻草としての形状を有しないものを除}}\newline
\textsf{ \ul{く。)\zwahをいう。}}\newline
\textsf{\ul{3} この法律で「\ul{大麻草栽培者}」とは、\ul{大麻草採取栽培者及び大麻}}\newline
\textsf{ \ul{草研究栽培者}をいう。}\newline
\textsf{\ul{4} この法律で「\ul{大麻草採取栽培者}」とは、\ul{第五条第一項の規定に}}\newline
\textsf{ \ul{より}都道府県知事の免許を受けて、\ul{種子又は繊維}を採取する目的}\newline
\textsf{ で、大麻草を栽培する者をいう。}\newline
\textsf{\ul{5} この法律で「\ul{大麻草研究栽培者}」とは、\ul{第十三条第一項の規定}}\newline
\textsf{ \ul{により厚生労働大臣}の免許を受けて\ul{、大麻草}を研究する目的で\ul{、}}\newline
\textsf{ \ul{大麻草を栽培する}者をいう。}\newline

  • 〔参考2〕\underline と \nl を用いて記述したコード:

\textsf{第二条 \underline{この法律で「大麻草」とは、カンナビス・サティバ・リン}}\nl
\textsf{ \underline{ネをいう。}}\nl
\textsf{\ul{2} \underline{この法律で「大麻」とは、大麻草(その種子及び成熟した茎を}}\nl
\textsf{ \underline{除く。)\zwah及びその製品(大麻草としての形状を有しないものを除}}\nl
\textsf{ \underline{く。)\zwahをいう。}}\nl
\textsf{\underline{3} この法律で「\underline{大麻草栽培者}」とは、\underline{大麻草採取栽培者及び大麻}}\nl
\textsf{ \underline{草研究栽培者}をいう。}\nl
\textsf{\underline{4} この法律で「\underline{大麻草採取栽培者}」とは、\underline{第五条第一項の規定に}}\nl
\textsf{ \underline{より}都道府県知事の免許を受けて、\underline{種子又は繊維}を採取する目的}\nl
\textsf{ で、大麻草を栽培する者をいう。}\nl
\textsf{\underline{5} この法律で「\underline{大麻草研究栽培者}」とは、\underline{第十三条第一項の規定}}\nl
\textsf{ \underline{により厚生労働大臣}の免許を受けて\underline{、大麻草}を研究する目的で\underline{、}}\nl
\textsf{ \underline{大麻草を栽培する}者をいう。}\nl


<2> noteにおける全角文字の句点と全角文字の「終わり丸括弧」の組版

  • <D>の行でコマンドをすべて取り除くと、行頭に全角文字のスペースが1つあり、「除く」があり、全角文字の句点があり、その後ろに全角文字の「終わり丸括弧」が連続している

 除く。)及びその製品(大麻草としての形状を有しないものを除

  • また、<J>の行でコマンドをすべて取り除くと、行頭に全角文字のスペースが2つあり、全角文字の句点があり、その後ろに全角文字の「終わり丸括弧」が連続し、その後ろに全角文字の句点が連続している

  。)。

  • 日本語の組版には、次のような原則がある。

    • 全角文字の句点と全角文字の終わり括弧は、どちらも半角の字幅で組版する。

    • 全角文字の句点と全角文字の終わり括弧が連続する場合、字間はベタ組とし、最後をアキとする。

「漢字等(cl-19),平仮名(cl-15)及び片仮名(cl-16)は,正方形の文字の外枠を持っており,……漢字等(cl-19),平仮名(cl-15)及び片仮名(cl-16)の外枠は正方形なので,その字幅は全角となる」(§ 2.1.2
「漢字等(cl-19),平仮名(cl-15)及び片仮名(cl-16)は,行に文字を配置していく際には,原則として,文字の外枠を密着させて配置するベタ組にする」(§ 2.1.3
「読点類(cl-07),句点類(cl-06),始め括弧類(cl-01),終わり括弧類(cl-02)及び中点類(cl-05)の字幅は,半角である」(§ 3.1.2
「読点類(cl-07)又は句点類(cl-06)の後ろに終わり括弧類(cl-02)が連続する場合は,読点類(cl-07)又は句点類(cl-06)と終わり括弧類の字間はベタ組とし,終わり括弧類の後ろを原則として二分アキとする」(§ 3.1.4
終わり括弧類(cl-02)の後ろに句点類(cl-06)が連続する場合は,終わり括弧類(cl-02)と句点類(cl-06)の字間はベタ組とし,行中では句点類(cl-06)の後ろを二分アキとし,行末では句点類(cl-06)の後ろを原則として二分アキとする」(§ 3.1.4
「それぞれの後ろ……を二分アキ……にし,全角の幅にすると空き量が目立ち,体裁がよくないからである」(§ 3.1.4

Requirements for Japanese Text Layout 日本語組版処理の要件(日本語版)
(W3C Working Group Note 11 August 2020)
  • この原則に従うならば、<D>の行と<J>の行は次のように組版することになるはずである:

    • 「除く。)及び」 ⇒「除」と「く」をどちらも全角の字幅とし、句点と終わり括弧をどちらも半角の字幅とし、その後ろを二分アキとし、「及」と「び」をどちらも全角の字幅とする

    • 「。)。」 ⇒1つめの句点、終わり括弧、2つめの句点をすべて半角の字幅とする(その後ろは、文字が続くならば二分アキとしてから文字を続ける)

  • しかし、PDFファイル「法律新旧対照条文」ではこの原則に従わず、全角文字の句点や全角文字の終わり丸括弧を全角の字幅とし、その後ろをベタ組としている。これはおそらく、体裁の良さよりもミスの発生防止を優先させる目的で、文字間隔を詰めない設定をわざわざ選んでいるのだろう。

  • noteでも、PDFファイル「法律新旧対照条文」と同じく、全角文字の句点や全角文字の終わり丸括弧を全角の字幅とし、その後ろをベタ組としている(引用表示外でも引用表示内でも同じである)。

全角文字の句点と全角文字の終わり丸括弧を全角の字幅とし、その後ろをベタ組とすると、次の3行は同じ長さになり、右端の位置が揃う:
あいうえおかきくけこ
除く。)及びアイウエ
。)。アイウエオカキ

〔参考〕半角カナの句点と欧文文字の終わり丸括弧の場合、半角カナの句点は半角の字幅となり、欧文文字の終わり丸括弧は半角よりもさらに狭い字幅となるので、右端の位置が揃わない:
あいうえおかきくけこ
除く。)及びアイウエ
。)。アイウエオカキ

  • ただし、noteのTeX記法のarray環境内では、WindowsパソコンとAndroidスマホとで挙動が次のように変わる:

  1. WindowsパソコンのGoogle Chromeで表示したnoteホームページのプレビューでは、組版の原則どおり、全角文字の句点や全角文字の終わり丸括弧を半角の字幅とし、その後ろを二分アキとする。

  2. AndroidスマホのGoogle Chromeで表示したnoteホームページのプレビューや、Androidスマホのnoteアプリのプレビューでは、全角文字の句点や全角文字の終わり丸括弧を全角の字幅とし、その後ろをベタ組とする。

  3. この挙動は、

    1. エディタ画面中のプレビュー機能でもプレビュー画面でも同じである。

    2. 引用表示外でも引用表示内でも同じである。

    3. 本文フォント(\textsf)でも数式フォント(\mathsf)でも同じである。

$$
\newcommand\arraystretch{1.5}
\footnotesize

\begin{array}{l}
\textsf{Windowsパソコンのプレビューでは、次の5行のうち}\\
\textsf{2行目と3行目の右端が1行目よりも半角分だけ左に寄り、}\\
\textsf{4行目と5行目の右端がさらに半角分だけ左に寄る。}\\
\textsf{Androidスマホのプレビューでは、次の5行の右端の位置が揃う。}\\
\\
\textsf{あいうえおかきくけこ}\\
\textsf{除く。)及びアイウエ}\\
\mathsf{除く。)及びアイウエ}\\
\textsf{。)。アイウエオカキ}\\
\mathsf{。)。アイウエオカキ}\\
\end{array}
$$

TeX記法のコードは次のとおり:

$$
\newcommand\arraystretch{1.5}
\footnotesize

\begin{array}{l}
\textsf{Windowsパソコンのプレビューでは、次の5行のうち}\\
\textsf{2行目と3行目の右端が1行目よりも半角分だけ左に寄り、}\\
\textsf{4行目と5行目の右端がさらに半角分だけ左に寄る。}\\
\textsf{Androidスマホのプレビューでは、次の5行の右端の位置が揃う。}\\
\\
\textsf{あいうえおかきくけこ}\\
\textsf{除く。)及びアイウエ}\\
\mathsf{除く。)及びアイウエ}\\
\textsf{。)。アイウエオカキ}\\
\mathsf{。)。アイウエオカキ}\\
\end{array}
$$

  • なお、WindowsパソコンのFirefoxやEdgeでどのような表示になるかは未調査である。また、Macでどのような表示になるか、iPhoneでどのような表示になるかは、MacやiPhoneが手元にないのでわからない。さらに、いわゆる「おま環」(お前の環境でだけ問題が起きている)の可能性もないとは限らない。調査をこれ以上進めるには、協力者が必要である。


<3> 二分アキや長いアキの挿入(マクロ定義コマンドの応用2)

  • <D><E><I><J><K>の5ヶ所に二分アキを挿入して位置揃えをする目的で、新コマンド「\zwah」を定義した。

  • <A>に全角60字分の長いアキを挿入する目的で、新コマンド「\zwkok」を定義した。

  • <B><C>で2ヶ所ずつ計4ヶ所に全角5.5字分のアキを挿入する目的で、新コマンド「\zwkah」を定義した。ついでに、全角8字分、全角17字分のアキを挿入する目的で、それぞれ新コマンド「\zwku」、「\zwchi」を定義した。

  • KaTeXコマンド「\phantom」は、引数({ } 内の文字列)と同じ幅で同じ高さの空白を表示するコマンドである。和文では漢字・平仮名・片仮名の文字幅が均一(すべて全角)なのでこのコマンドの意義があまりピンとこないのだが、欧文では個々のアルファベットの字幅が不均一なので、このコマンドが文字の位置揃えに役立つ:

$$
\newcommand\arraystretch{1.5}
\begin{array}{l}
\mathrm{abcdefghijklmnopqrstuvwxyz}\\
\mathrm{abcde\phantom{fghij}klmno\phantom{pqrst}uvwxyz}\\
\end{array}
$$

TeX記法のコードは次のとおり:

$$
\newcommand\arraystretch{1.5}
\begin{array}{l}
\mathrm{abcdefghijklmnopqrstuvwxyz}\\
\mathrm{abcde\phantom{fghij}klmno\phantom{pqrst}uvwxyz}\\
\end{array}
$$

  • noteでは、IMEを半角英数字入力モードや半角カナ入力モードに変更してスペースキーを1回押すと、カーソルの位置に和文の半角の字幅の空白ではなく欧文のスペースが挿入される。欧文のスペースの字幅は、和文の半角の字幅よりも狭い:

あいうえおカキクケコさしすせそ
あいうえお     さしすせそ  ←「あいうえお」+半角入力モードでスペースキー5回+「さしすせそ」

  • また、IMEをひらがな入力モードに変更してスペースキーを60回続けて押すと、noteのエディタ画面では全角スペースが途中で折り返されずに表示される(マウスの左ボタンを押しながら60個の全角スペースをなぞると、途中で折り返されていないことがわかる)。なお、エディタ画面中のプレビュー機能プレビュー画面でも、全角60字分の長いアキが途中で折り返されずに表示されるが、これは「あいうえお………カキクケコ」(全角60字)が途中で折り返されないのと同じなので、期待どおりの挙動である:

$$
\newcommand\arraystretch{1.5}
\footnotesize

\begin{array}{l}
\textsf{あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやヤイゆヤエよわゐワウゑをアイウエオカキクケコ(傍線部分は改正部分)}\\
\textsf{                                                       (傍線部分は改正部分)}\\
\end{array}
$$

TeX記法のコードは次のとおり:

$$
\newcommand\arraystretch{1.5}
\footnotesize

\begin{array}{l}
\textsf{あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやヤイゆヤエよわゐワウゑをアイウエオカキクケコ(傍線部分は改正部分)}\\  ←仮名ならば、エディタ画面上では途中で折り返される
\textsf{                                                       (傍線部分は改正部分)}\\  ←「\textsf{」の直後に全角スペースが60個入っているが、エディタ画面上では途中で折り返されない
\end{array}
$$

  • KaTeXで水平方向に空白を入れるコマンドは、[SF] の Layout > Overlap and Spacing > Spacing にまとめられている。また、字幅の単位は [SF] の Units にまとめられている。

  • フォントサイズを絶対単位(ptポイントmmミリメートルinインチ)で指定していない場合、位置揃えの目的で二分アキの指定に絶対単位を用いるのは不適切である。また、相対単位の em と ex は欧文文字を基準にしているので、和文の全角や半角の字幅とは必ずしも一致しない(なお、状況によっては、1 em の字幅が後述の 1 zw の字幅と一致する場合もある)。

  • 日本語化したLaTeX(pLaTeXやupLaTeX)では、全角の字幅を表す「zw」(zenkaku width の意味)という単位がサポートされていて、たとえば「\hspace{8 zw}」で全角8字分の空白を入れることができるのだが、KaTeXでは「zw」がサポートされていない。

  • そこで、代用品として次のような新コマンドを用意した:

    • \zwah 「半角ア」と同じ字幅(全角0.5字分)の空白を入れる(A, Hankaku ⇒ \zwah

    • \zwkah 「全角あ」から「全角お」まで+「半角カ」と同じ字幅(全角5.5字分)の空白を入れる(KA, Hankaku ⇒ \zwkah

    • \zwku 「全角あ」から「全角く」までと同じ字幅(全角8字分)の空白を入れる(KU ⇒ \zwku

    • \zwchi 「全角あ」から「全角ち」までと同じ字幅(全角17字分)の空白を入れる(CHI ⇒ \zwchi

    • \zwkok 「全角あ」から「全角を」まで+「全角ア」から「全角コ」までと同じ字幅(全角60字分)の空白を入れる(KO, Katakana ⇒ \zwkok

  • 理想的には、たとえば「\zw{5.5}」と書けば全角5.5字分の字幅の空白を入れるような新コマンドが作りたかったのだが、KaTeXのコマンドを組み合わせてそのような新コマンドを作る方法は思いつかなかった。

  • 新コマンド「\zwku」(全角8字分)と「\zwchi」(全角17字分)については、新コマンドを作らず、単純に全角スペースを8個あるいは17個挿入するだけでも同じ結果が得られる。また、「\zwkah」(全角5.5字分)についても、新コマンド「\zwah」(全角0.5字分)さえ用意しておけば、あとは全角スペースを5個挿入するだけで事足りる。とはいえ、「\phantom{あいうえおかきく}」や「\phantom{あいうえおかきくけこさしすせそたち}」や「\phantom{あいうえおカ}」を用いれば、全角スペースの個数ミスを確実に防ぐことができる。

単純に全角スペースを挿入した例:

\begin{array}{l}
\textsf{\zwah     改        正        案     \zwah}\\
\end{array}&

\begin{array}{l}
\textsf{\zwah     現                 行     \zwah}\\
\end{array}\\

  • TeXのマクロの名前には数字を用いることができないので、「\zw8」や「\zw17」といった名前の新コマンドを定義することはできない。そこで、数字の代わりに、「\phantom{あいうえお……}」の最後の仮名文字を新コマンドの名前に組み込んだ。


<4> 多数の行送りの挿入(マクロ定義コマンドの応用3)

  • LaTeXでは、垂直方向に空白を挿入する「\vspace」というコマンドと、行送りの長さを表す「\baselineskip」というパラメーターがサポートされていて、たとえば「\vspace{16\baselineskip}」で16行分の行送りを挿入することができるのだが、KaTeXでは「\vspace」も「\baselineskip」もサポートされていない。

  • もちろん、16行分の行送りを挿入するためには単純に「\\」を16行続けて記せばよいのだが、上記の新コマンド「\zwku」や「\zwchi」と同じように個数ミスを確実に防ぐ方法があるならば、それを用いるに越したことはない。

  • そこで、次のような新コマンドを用意した:

    • \baselineskipe 「あ\\」から「え\\」までと同じ行数(4行分)の行送りを入れる(E ⇒ \baselineskipe) →<F>

    • \baselineskipku 「あ\\」から「く\\」までと同じ行数(8行分)の行送りを入れる(KU ⇒ \baselineskipku) →<G>

    • \baselineskipta 「あ\\」から「た\\」までと同じ行数(16行分)の行送りを入れる(TA ⇒ \baselineskipta) →<H>

  • KaTeXコマンド「\vphantom」(vertical phantom の意味)は、引数({ } 内の文字列)と同じ高さで幅が0の空白を表示するコマンドである。行送りでは空白のの有無はどうでもよいので、「\vphantom」の代わりに「\phantom」を用いても同じ結果が得られるはずだが、ここでは垂直方向に注目していることを強調するため、あえて「\vphantom」を用いた。


<5> 「\arraystretch」パラメーターの値の変更と「\footnotesize」の指定は、どちらを先に行ってもよい

  • マクロ定義をまとめて配置するため、覚え書き【その2】とは逆に、「\newcommand\arraystretch{1.5}」を「\footnotesize」の前に置いた。


<6> 表はまず罫線から作り始めるのがコツ

  • 表は、まず罫線から作り始め、次にタイトルやキャプションの位置揃えをし、それから細部を作り込むのがコツである。

  • 「大麻取締法」の表を、まず罫線から作り始める:

$$
\textsf{大麻取締法}\\
\textsf{政令で定める日施行}\\
\textsf{傍線部分は改正部分}\\

\begin{array}{|l|l|}

\hline

\begin{array}{l}
\textsf{改正案}\\
\end{array}&

\begin{array}{l}
\textsf{現行}\\
\end{array}\\

\hline

\begin{array}{l}
\textsf{大麻草栽培規制法}\\
\textsf{目次}\\
\end{array}&

\begin{array}{l}
\textsf{大麻取締法}\\
\textsf{(新設)}\\
\end{array}

\end{array}
$$

TeX記法のコードは次のとおり:

$$
\textsf{大麻取締法}\\
\textsf{政令で定める日施行}\\
\textsf{傍線部分は改正部分}\\
\begin{array}{|l|l|}

\hline

\begin{array}{l}
\textsf{改正案}\\
\end{array}&

\begin{array}{l}
\textsf{現行}\\
\end{array}\\

\hline

\begin{array}{l}
\textsf{大麻草栽培規制法}\\
\textsf{目次}\\
\end{array}&

\begin{array}{l}
\textsf{大麻取締法}\\
\textsf{(新設)}\\
\end{array}
        ←表の作成を第一章までで打ち切るので、最後の横罫線を引かない(ここに「\hline」を書かない)
\end{array}
$$

  • 罫線を作る工程では、表の意味に引きずられて「改正案」→「大麻草栽培規制法」→「現行」→「大麻取締法」の順にコードを書こうとしてはならない。その順にコードを書こうとすると、表の中の表を作る必要が生じて、横罫線がとぎれてしまう:

$$
\textsf{大麻取締法}\\
\textsf{政令で定める日施行}\\
\textsf{傍線部分は改正部分}\\
\begin{array}{|l|l|}

\hline

\begin{array}{l}

\begin{array}{l}
\textsf{改正案}\\
\end{array}\\

\hline

\begin{array}{l}
\textsf{大麻草栽培規制法}\\
\textsf{目次}\\
\end{array}

\end{array}&

\begin{array}{l}

\begin{array}{l}
\textsf{現行}\\
\end{array}\\

\hline

\begin{array}{l}
\textsf{大麻取締法}\\
\textsf{(新設)}\\
\end{array}

\end{array}

\end{array}
$$

TeX記法のコードは次のとおり:

$$
\textsf{大麻取締法}\\
\textsf{政令で定める日施行}\\
\textsf{傍線部分は改正部分}\\
\begin{array}{|l|l|}

\hline

\begin{array}{l}  ←左列を「表の中の表」にする必要が生じる

\begin{array}{l}
\textsf{改正案}\\
\end{array}\\  ←ここの行末は「&」ではなく「\\」になる

\hline  ←横罫線が「表の中の表」をはみ出さないので、とぎれてしまう

\begin{array}{l}
\textsf{大麻草栽培規制法}\\
\textsf{目次}\\
\end{array}

\end{array}&  ←左列の表はここまで。隣に右列の表を配置するので、ここの行末は「&」になる

\begin{array}{l}  ←右列を「表の中の表」にする必要が生じる

\begin{array}{l}
\textsf{現行}\\
\end{array}\\  ←ここの行末は「&」ではなく「\\」になる

\hline  ←横罫線が「表の中の表」をはみ出さないので、とぎれてしまう

\begin{array}{l}
\textsf{大麻取締法}\\
\textsf{(新設)}\\
\end{array}

\end{array}  ←右列の表はここまで

\end{array}
$$

  • 一般に、表のコードは、行や列の個数によらず、必ず次のような順序で書く。

$$
\begin{array}{|l|l|}
\hline
\textsf{1}&\textsf{2}\\
\hline
\textsf{3}&\textsf{4}\\
\hline
\end{array}

\quad

\begin{array}{|l|l|l|}
\hline
\textsf{1}&\textsf{2}&\textsf{3}\\
\hline
\textsf{4}&\textsf{5}&\textsf{6}\\
\hline
\end{array}

\quad

\begin{array}{|l|l|}
\hline
\textsf{1}&\textsf{2}\\
\hline
\textsf{3}&\textsf{4}\\
\hline
\textsf{5}&\textsf{6}\\
\hline
\end{array}
$$

  • 次に、表のタイトルを左揃えにする:

$$
\begin{align*}
&\textsf{大麻取締法}\\
&\textsf{政令で定める日施行}\\
&\textsf{傍線部分は改正部分}\\
&\begin{array}{|l|l|}

\hline

\begin{array}{l}
\textsf{改正案}\\
\end{array}&

\begin{array}{l}
\textsf{現行}\\
\end{array}\\

\hline

\begin{array}{l}
\textsf{大麻草栽培規制法}\\
\textsf{目次}\\
\end{array}&

\begin{array}{l}
\textsf{大麻取締法}\\
\textsf{(新設)}\\
\end{array}

\end{array}
\end{align*}
$$

TeX記法のコードは次のとおり:

$$
\begin{align*}  ←align*環境の開始を追加する
&
\textsf{大麻取締法}\\  ←揃え位置を「&」で示す
&\textsf{政令で定める日施行}\\
&\textsf{傍線部分は改正部分}\\
&\begin{array}{|l|l|}

\hline

\begin{array}{l}
\textsf{改正案}\\
\end{array}&

\begin{array}{l}
\textsf{現行}\\
\end{array}\\

\hline

\begin{array}{l}
\textsf{大麻草栽培規制法}\\
\textsf{目次}\\
\end{array}&

\begin{array}{l}
\textsf{大麻取締法}\\
\textsf{(新設)}\\
\end{array}

\end{array}
\end{align*}  ←align*環境の終了を追加する
$$

  • これで表の大枠が完成した。後は細部にひたすら「お化粧」をほどこせばよい。


<7> ディスプレイ数式モード内で、行末の「\\」の直前に半角スペースをむやみに入れるのは好ましくない

  • ディスプレイ数式モード内で、行末の「\\」の直前に半角スペースをむやみに入れるのは好ましくない。半角スペースの影響で、文字の位置がズレる場合があるからである。

  • 実際には半角スペースが1個だけならば影響が出ない場合も多いのだが、だからといって行末の「\\」の直前に無条件に半角スペースを1個入れる習慣をつけてしまうと、ある時突然、文字の位置が微妙にズレていることに気がつき、理由がわからずに頭を抱えることになる可能性が非常に高い。

  • 以下の各例では、ズレを目立たせる目的で、半角スペースを20個ずつ入れる。

〔例1〕行末の「\\」の直前に半角スペースを入れない場合:

$$
\textsf{大麻取締法}\\
\textsf{政令で定める日施行}\\
\textsf{傍線部分は改正部分}\\

\begin{array}{|l|l|}

\hline

\begin{array}{l}
\textsf{改正案}\\
\end{array}&

\begin{array}{l}
\textsf{現行}\\
\end{array}\\

\hline

\begin{array}{l}
\textsf{大麻草栽培規制法}\\
\textsf{目次}\\
\end{array}&

\begin{array}{l}
\textsf{大麻取締法}\\
\textsf{(新設)}\\
\end{array}

\end{array}
$$

TeX記法のコードは次のとおり:

$$
\textsf{大麻取締法}\\
\textsf{政令で定める日施行}\\
\textsf{傍線部分は改正部分}\\

\begin{array}{|l|l|}

\hline

\begin{array}{l}
\textsf{改正案}\\
\end{array}&

\begin{array}{l}
\textsf{現行}\\
\end{array}\\

\hline

\begin{array}{l}
\textsf{大麻草栽培規制法}\\
\textsf{目次}\\
\end{array}&

\begin{array}{l}
\textsf{大麻取締法}\\
\textsf{(新設)}\\
\end{array}

\end{array}
$$

〔例2〕array環境で行末の「\\」の直前に半角スペースを入れた場合、もしもその行がalign*環境内にあって左揃えの指定を受けていれば何も起きないが、そうでなければ、その行の文字列は行末の「\\」の直前に入れた半角スペースを含めて画面中央揃えになる

$$
\textsf{大麻取締法}\\
\textsf{政令で定める日施行}                    \\
\textsf{傍線部分は改正部分}\\

\begin{array}{|l|l|}

\hline

\begin{array}{l}
\textsf{改正案}\\
\end{array}&

\begin{array}{l}
\textsf{現行}\\
\end{array}\\

\hline

\begin{array}{l}
\textsf{大麻草栽培規制法}\\
\textsf{目次}\\
\end{array}&

\begin{array}{l}
\textsf{大麻取締法}\\
\textsf{(新設)}\\
\end{array}

\end{array}
$$

TeX記法のコードは次のとおり:

$$
\textsf{大麻取締法}\\
\textsf{政令で定める日施行}                    \\  ←ここで「\\」の直前に半角スペースを入れると、『「政令で定める日施行」+半角スペース20個』が画面中央揃えになるので、「政令で定める日施行」の位置が左にズレる
\textsf{傍線部分は改正部分}\\

\begin{array}{|l|l|}

\hline

\begin{array}{l}
\textsf{改正案}\\
\end{array}&

\begin{array}{l}
\textsf{現行}\\
\end{array}\\

\hline

\begin{array}{l}
\textsf{大麻草栽培規制法}\\
\textsf{目次}\\
\end{array}&

\begin{array}{l}
\textsf{大麻取締法}\\
\textsf{(新設)}\\
\end{array}

\end{array}
$$

〔例3〕array環境で行末の「\\」の直前に半角スペースを入れた場合、半角スペースを入れたことによってその列で横幅が最も長いセルにならなければ何も起きないが、その列で横幅が最も長いセルになるならば、その列の横幅は「\\」の直前に入れた半角スペースの長さを含めて決まる

$$
\textsf{大麻取締法}\\
\textsf{政令で定める日施行}\\
\textsf{傍線部分は改正部分}\\

\begin{array}{|l|l|}

\hline

\begin{array}{l}
\textsf{改正案}\\
\end{array}&

\begin{array}{l}
\textsf{現行}\\
\end{array}\\

\hline

\begin{array}{l}
\textsf{大麻草栽培規制法}                    \\
\textsf{目次}\\
\end{array}&

\begin{array}{l}
\textsf{大麻取締法}\\
\textsf{(新設)}\\
\end{array}

\end{array}
$$

TeX記法のコードは次のとおり:

$$
\textsf{大麻取締法}\\
\textsf{政令で定める日施行}\\
\textsf{傍線部分は改正部分}\\

\begin{array}{|l|l|}

\hline

\begin{array}{l}
\textsf{改正案}\\
\end{array}&

\begin{array}{l}
\textsf{現行}\\
\end{array}\\

\hline

\begin{array}{l}
\textsf{大麻草栽培規制法}                    \\  ←ここで「\\」の直前に半角スペースを入れると、表の左列の横幅が半角スペースの分だけ長くなる
\textsf{目次}\\
\end{array}&

\begin{array}{l}
\textsf{大麻取締法}\\
\textsf{(新設)}\\
\end{array}

\end{array}
$$

  • 覚え書き【その2】では、この点に気づかずに、行末の「\\」の直前に無条件に半角スペースを1個入れていた。今振り返ると好ましくないと思うが、修正は大変なので、そのままにしておく。覚え書き【その3】で行末の「\\」の直前に半角スペースを入れないようにしたところ、コードが見づらくなるようなことは特段なく、むしろ半角スペースを入力する手間が省けて楽になった。


<8> KaTeXには、表内のセルの横幅を任意の長さに固定してセル内の文字列を自動的に折り返す機能がない

  • PDFファイル「法律新旧対照条文」では、「改正案」の列も「現行」の列も、1行あたりの文字数は30字である。この文字数は、国では30字に決まっている:

 ……国の法制執務業務支援システム(e-LAWS)が運用開始されたのに伴い、改め文自動作成システムに入力する新旧対照表の記載方法が定められ、国において新旧対照表の標準化が図られたところである。以下この基準に沿って解説するが、これは国の基準であるので、地方公共団体が独自のルールを定めることは、全く問題ない。

新旧対照表の概要
 新旧対照表の基本フォーマットは、次のとおりである。ただし、本来縦書きであるので、以下それを前提として解説する。
   (中略)
 なお、配字のルールとして、上欄下欄とも1行30字とすることとされた。

礒崎陽輔、分かりやすい法律・条令の書き方[改訂版]、
平成28年10月11日改訂版6版発行、ぎょうせい、pp. 269-270

(note記事公開時点における引用文献の最新版はこちら:)

  • 表内のセルの横幅を「全角30字分の長さ」に固定してセル内の文字列を自動的に折り返すには、LaTeXではtabular環境で「p{長さ}」を用いてセルの横幅を指定すればよいらしい。ただ、長さの指定に絶対単位のcmセンチメートルを用いる例は見つかったが、相対単位のzwを用いる例は見つからなかった:

LaTeXでの例:

\begin{tabular}{|p{3cm}|p{5cm}|}
   |
\end{tabular}

  • KaTeXで表内のセルの横幅を「全角30字分の長さ」に固定してセル内の文字列を自動的に折り返す方法は、見つからなかった。そこで、PDFファイル「法律新旧対照条文」と照合しながら、TeX記法のコードの各行の行末に逐一「\\」を入れた。

  • せめて「\textsf」を1回だけ書いて済ませることはできないかと考え、「\textsf」コマンドの引数の途中に「\\」を入れてみたところ、改行が一切なされず、期待に反する結果に終わった:

$$
\newcommand\ul[1]{\underline{#1}}

\newcommand\arraystretch{1.5}
\footnotesize

\begin{array}{|l|l|}
\hline
\begin{array}{l}
\\
\textsf{\ul{第一条} \ul{この法律は、大麻草の栽培の適正を図るために必要な規制}\\
 \ul{を行うことにより、麻薬及び向精神薬取締法(昭和二十八年法律}\\
 \ul{第十四号)と相まつて、大麻の濫用による保健衛生上の危害を防}\\
 \ul{止し、もつて公共の福祉に寄与することを目的とする。}}\\
\\
\end{array}
\end{array}
$$

TeX記法のコードは次のとおり:

$$
\newcommand\ul[1]{\underline{#1}}

\newcommand\arraystretch{1.5}
\footnotesize

\begin{array}{|l|l|}
\hline
\begin{array}{l}
\\
\textsf{\ul{第一条} \ul{この法律は、大麻草の栽培の適正を図るために必要な規制}\\  ←「\textsf{……}」の途中に「\\」を入れても改行されない
 \ul{を行うことにより、麻薬及び向精神薬取締法(昭和二十八年法律}\\
 \ul{第十四号)と相まつて、大麻の濫用による保健衛生上の危害を防}\\
 \ul{止し、もつて公共の福祉に寄与することを目的とする。}}\\
\\
\end{array}
\end{array}
$$


<9> noteではぶら下げインデントが指定できない

  • PDFファイル「法律新旧対照条文」では、ぶら下げインデントが多用されている(★の箇所がぶら下げインデント):

$$
\newcommand\ul[1]{\underline{#1}}

\newcommand\arraystretch{1.5}
\footnotesize

\begin{array}{|l|l|}
\hline
\begin{array}{l}
\\
\textsf{\ul{第一条} \ul{この法律は、大麻草の栽培の適正を図るために必要な規制}}\\
\textsf{★\ul{を行うことにより、麻薬及び向精神薬取締法(昭和二十八年法律}}\\
\textsf{★\ul{第十四号)と相まつて、大麻の濫用による保健衛生上の危害を防}}\\
\textsf{★\ul{止し、もつて公共の福祉に寄与することを目的とする。}}\\
\\
\end{array}
\end{array}
$$

  • 国の法令では、ぶら下げインデントについても配字のルールが決まっている:

 条は、第1字目から「第◯条」と書き始める。条又は第1項は、条番号から1字空けて書き始める。条又は第1項が2行以上に及ぶときは、2行目以降は1字空きの2字目から書き始める。ただし書や後段は、改行してはならない。第2項以降は、第1字目に項番号を書き、1字空きの3字目から書き始める。2行目以降は、条及び第1項と同様に、1字空きの2字目から書き始める。
   (中略)
 各号列記を置くときは、号番号は1字空きの2字目に置き、内容はそれから1字空きの4字目から書き始める。2行以上に及ぶときは、2行目の行頭は2字空きの3字目から書き始める。

礒崎陽輔、分かりやすい法律・条令の書き方[改訂版]、
平成28年10月11日改訂版6版発行、ぎょうせい、p. 260
  • LaTeXでぶら下げインデントを指定するには、主に次の2種類の方法があるようだ。

    • 「\hangindent」(ぶら下げインデント幅)と「\hangafter」(ぶら下げインデントを開始するまでの行数)を指定する方法

    • 「\leftmargin」(段落全体の左インデント幅)を「\parindent」(段落の先頭行のインデント幅)よりも大きく指定する方法

  • KaTeXではインデント幅を表すパラメーターがサポートされていないので、noteのTeX記法ではぶら下げインデントを指定することができない。したがって、ぶら下げインデントを疑似的に実現する目的で、上記の★の箇所に全角スペースを逐一入力する必要がある。

  • そもそも、noteのエディタにはぶら下げインデントを指定する機能がない。たとえば、「大麻草の栽培の規制に関する法律」第一条を次のように記すと、2行目以降はすべて「1字目」の位置から表示される。2行目以降の「1字目」の位置にどの文字がくるかは、画面の横幅などの環境によって変化する。執筆者が1行あたりの文字数を30字と決めて「\\」で強制的に折り返し、2行目以降の1字目に全角スペースを逐一入力するといった力技は、KaTeXのarray環境内という特殊な状況下でかろうじて実行できるにすぎず、note本体では実行不可能である。

第一条 この法律は、大麻草の栽培の適正を図るために必要な規制を行うことにより、麻薬及び向精神薬取締法(昭和二十八年法律第十四号)と相まつて、大麻の濫用による保健衛生上の危害を防止し、もつて公共の福祉に寄与することを目的とする。

↑2行目以降にぶら下げインデントを指定することができない

大麻草の栽培の規制に関する法律


<10> ディスプレイ数式モード内のTeX記法のコードをそのまま表示させる方法

  • ディスプレイ数式モードの終了を表す「$$」の直後に「  ←<10>」という文字列を入れることによって、表のプレビューを表示させず、TeX記法のコードをそのまま表示させることができる。

  • あるいは、ディスプレイ数式モードの開始を表す「$$」の前行に「TeX記法のコードは次のとおり:」という文字列を入れることによって、表のプレビューを表示させず、TeX記法のコードをそのまま表示させることができる。

  • もちろん、文字列は何でもよい(「  ←<10>」や「TeX記法のコードは次のとおり:」である必要はない)。



終わりに

 このnote記事では、作成目標の表をTeX記法でおおむね作ることができた。特に、「\phantom」コマンドや「\vphantom」コマンドを用いて作ったアキ挿入用・行送り挿入用の新コマンドは、我ながら悪くない案だと思っている(自画自賛)。もっとも、筆者が思いつく程度のことは既に誰かが思いついているはずで、いわゆる「車輪の再発明」である可能性は高い。また、「\phantom」コマンドの歴史を調べたところ、LaTeXが登場する前のplain TeXにマクロの形で既に実装されていたとのことなので、そもそもTeXを開発したDonald E. Knuthこそが偉大だったという平凡な結論に落ち着きそうだ。
 覚え書き【その3】はここまでとする。
 なお、次の記事(覚え書き【その4】)では、新たな表の作成に取り組むという当初の予定を変更し、【その3】の作表経験をふまえてnoteの機能についての考察を進めることにする。


(覚え書き【その4】に続く)


いいなと思ったら応援しよう!