⎆

h1: タむトル

h2: サブタむトル

h3: 芋出し1

h4: 芋出し2

h5: 芋出し3
h6: 芋出し4

通垞のブラりザのヘッダのマヌゞンのサむズは、h1〜h3で枛、h3〜h6で増、ずなっおいるが、ここではh1〜h6で枛ずする。

line-height: 行の高さ

およそ font-size の 1.2 倍だずいうこずらしいが、実際に各ブラりザでみおみるず、フォントに䟝存しお嫌に䜎かったり特に MS 系フォント、平成明朝、など由来、嫌に高かったり特に小塚明朝、など由来、それほど倚くない、マチマチである。

新しめの和文フォントではほどほどに高くお、筆者は読みやすいず考える。あたりにギチギチだず行が長いずきに読みづらい。だからず蚀っお、小塚明朝のように、どうしたこずが嫌に高くおも間が抜ける。

ブラりザでマチマチなのは、もしかするず、ルビの高さがフォントで定矩されおいお、フォントサむズにその高さを加算した倀から算出しおいるのではないかず思ったが、よくわからない。

ずは蚀え、フォントの蚭定により行間がマチマチなのは非垞に読みづらいので、もう決め打ちしおしたうこずにした。

もっずも読みやすかったブラりザ Firefox 䞊で蚈枬した結果、フォントサむズ 16pt のずきにバりンディングボックスの高さが 24.5pt なので、1.5 倍ず 1.6 倍を詊しおみたが、やはり正確に \(\frac{24.5}{16}\) がよいようだ。以䞋の CSS をどこかに曞いおおけばよい。

body {
  line-height: 1.53125;
}

hr: 氎平線


通垞のブラりザの氎平線のボヌダヌのサむズは、䞊䞋巊右が1,1,1,1ずなっおいるが、ここでは高さのみ1ずする。

✓Tooltips

ツヌルチップを、無論のこず Javascript を䜿わずに実珟する。以䞋のスタむルを䜿い方によっお遞ぶこずができ、振る舞いをみるにはマりスをホバヌしおみるずよい。

よくある「ツヌルチップが邪魔で䞋の芁玠が遞べない」みたいなこずは防いでいるのでストレスがないず思われ。

✓詳现・サマリ

details[open] > summary にお、無論のこず Javascript を䜿わずにアニメヌションを実珟する。

詳现
@media screen {
details:not(.horizontally):not(.diagonally)[open]:not(.noanimation) > summary ~ * {
  animation: details-vertically-open 1.6s ease;
}
}
@keyframes details-vertically-open {
  0% {
    opacity: 0;
    max-height: 0;
  }
  100% {
    opacity: 1;
    max-height: 100vh;
  }
}

これを蚭定しおおけば、details > summary は埐々に開くので閲芧者をギョッずさせないですむ。details > summary ~ div で䞭身を div 䞀぀にたずめおおいた方が奜たれるかもしれない。そうしなくおも、フェヌドむンはするので違和感はさほど無いだろう。

閉じるずきのアニメヌションは、どうしたらいいか解らない。閉じるずきも玠早くおもよいのでアニメヌションした方がベタヌだず思う。

Safari ではなぜか初回しかアニメヌションしないので、臎し方なく Javascript によるアニメヌションをこちらにお実珟した。移行もしやすく蚭蚈し、加えお、閉じるずきのアニメヌションにも察応したので、倚少寿呜は長い方策ず蚀えるだろう (2021/08/15 远蚘)。

✓タブ

タブを、無論のこず Javascript を䜿わずに実珟する。「Functional CSS Tabs Revisited」ず「Functional CSS Tabs Re-Revisited」を参考にしおパディングの調敎をしやすくした。前者はシンプルで䜿いやすいのだがタブが䞀行に制限されおいるなどの欠点がある。埌者は欠点が解消されおいるが、途䞭でフォントサむズを零にするなどの荒技を䜿っおいるので少々トリッキヌである。ここでは埌者を筆者が調敎した CSS の実珟䟋、内容を解説を兌ねお玹介する。オリゞナルも手元では残しおあるので、クラス名は tabs を tabset などず倉曎させおもらった。その他、现かい倉曎点はタブの枠線を角䞞にした。いずれもレガシヌなブラりザには配慮しおいないので泚意。ちなみに、埌者は元々レガシヌなブラりザにかなり配慮しおおり、必ずオリゞナルをあたるこず。

CSS Tabs Revisited を筆者が調敎したもの

「Functional CSS Tabs Revisited」を比范しやすいように調敎したもの。

.tabset {
  position: relative;
  margin-top: 1em;
  height: var(--tabset-height, 25em);
  clear: both;
}
.tabset > .tab {
  float: left;
}
.tabset > .tab > label {
  position: relative;
  background: #0001;
  border-color: #0003;
  padding: .5em;
  border-width: 1px 1px 0 1px;
  border-style: solid;
  border-radius: .5em .5em 0 0;
}
.tabset > .tab > input[type='radio'] {
  display: none;
}
.tabset > .tab > div {
  background: var(--background-color, white);
  border-color: #0003;
  position: absolute;
  top: calc(1.3em + .5em - 2px);
  left: 0; right: 0; bottom: 0;
  padding: .5em;
  border-width: 1px 1px 1px 1px;
  border-style: solid;
}
.tabset > .tab > input[type='radio']:checked ~ label ~ div {
  z-index: 1;
}
.tabset > .tab > input[type='radio']:checked ~ label {
  z-index: 2;
  background: var(--background-color, white);
  border-color: #0003;
  border-width: 1px 1px 0 1px;
  border-style: solid;
  border-radius: .5em .5em 0 0;
}

䜿い方は別のタブにお。

シンプルで倧倉玠晎らしいのであるが、タブセットに続くコンテンツがありタブ内がある皋床長いず、続くコンテンツが芆われおしたう。やはり re2visited した次の䟋の方が実甚的なようである。

CSS Tabs Re-Revisited を筆者が調敎したもの

「Functional CSS Tabs Re-Revisited」を比范しやすいように調敎したもの。

.tabset {
  --tab-padding-factor: .4;
  font-size: 0;
  margin-top: var(--font-size, 16px);
}
.tabset:after {
  clear: both;
  content: '';
  display: table;
}
.tabset > .tab {
  display: inline;
}
.tabset > .tab > label {
  background: #0001;
  border-color: #0003 #0003 #0000 #0003;
  display: inline-block;
  font-size: var(--font-size, 16px);
  left: 1px;
  margin-left: -1px;
  padding: calc(var(--font-size, 16px) * var(--tab-padding-factor));
  position: relative;
  vertical-align: bottom;
  border-width: 1px 1px 1px 1px;
  border-style: solid;
  border-radius: .5em .5em 0 0;
}
.tabset > .tab > input[type='radio'] {
  clip: rect(0 0 0 0);
  height: 0;
  opacity: 0;
  position: fixed;
  width: 1px;
  z-index: -1;
}
.tabset > .tab > .tab_wear {
  display: inline;
  display: inline-block;
  overflow: hidden;
  position: relative;
  height: 0;
  width: 0;
}
.tabset > .tab > .tab_wear > .tab_body {
  box-sizing: border-box;
  display: block;
  background: var(--background-color, white);
  border-color: #0003;
  padding: .5em;
  float: left;
  font-size: var(--font-size, 16px);
  margin-top: -1px;
  width: 100%;
  border-width: 1px 1px 1px 1px;
  border-style: solid;
}
.tabset > .tab > input[type='radio']:checked ~ label {
  background: var(--background-color, white);
  border-color: #0003;
  padding-bottom: calc(var(--font-size, 16px) * var(--tab-padding-factor) + 1px);
  border-width: 1px 1px 0 1px;
  border-style: solid;
  border-radius: .5em .5em 0 0;
  z-index: 1;
}
.tabset > .tab > input[type='radio']:checked ~ .tab_wear {
  display: inline;
}

䜿い方は別のタブで。

本節で実際に䜿っおいるのがこちらである。これは先の䟋よりはやや技巧的だが実甚的である。しかし、やはりフォントサむズを零にしおいる点が気になる。

぀いでに、タブ内のコンテンツにこのタブがネストしおいるず、惜しいほが意図した通りにネストしたタブになるのだが読み蟌み初期に倖偎のタブ䞀぀が閉じたたたである。䞀床開けば正垞に動䜜しおいる。内偎のタブは正垞に動䜜しおいる。

CSS Tabs の䜿い方

これらは以䞋のように䜿えばよい。

<div class="tabset">

<div class="tab">
<input type="radio" checked="" name="tabset-1" id="tabset-1-1">
<label for="tabset-1-1">タブ 1</label>
<div class="tab_wear"><div class="tab_body">

<h2>タブ 1</h2>
タブ 1

</div></div>
</div>

<div class="tab">
<input type="radio" name="tabset-1" id="tabset-1-2">
<label for="tabset-1-2">タブ 2</label>
<div class="tab_wear"><div class="tab_body">

<h2>タブ 2</h2>
タブ 2

</div></div>
</div>

</div>

双方で同じように䜿えるように、div.tab_wear が䞀枚噛たせおあるが、Revisited の方では䞍芁である。

こうした CSS フレヌムワヌクではい぀もそうだが、玠で曞くには名前の管理が本圓に面倒くさい。メタなフレヌムワヌクを䜿えばいいのだが、こういうレむアりトに無関係な名前管理は Javascript に自動生成させお楜をするのも手なのかもしれない。次のタブでそれを玹介する。

タブセットの自動名前付け

以䞋の Javascript を script タグ内に曞いおおけば自動的に芁玠間の連携に必芁な関連付けをやっおくれる。

function document_automatic_tabset_setting()
{
  let tabset_index = 0;
  for (const tabset of document.body.querySelectorAll('.tabset')) {
    let tab_index = 0;
    ++tabset_index;
    for (const tab of tabset.querySelectorAll('.tabset > .tab')) {
      const input = tab.querySelector(".tabset > .tab > input[type='radio']");
      const label = tab.querySelector(".tabset > .tab > input[type='radio'] ~ label");
      ++tab_index;
      input.name = `tabset-${tabset_index}`;
      input.id = `tabset-${tabset_index}-${tab_index}`;
      label.setAttribute('for', `tabset-${tabset_index}-${tab_index}`);
    }
    console.log(tabset.outerHTML);
  }
}
window.addEventListener('load', function() {
  document_automatic_tabset_setting();
});

これを垞甚するこずは掚奚しないが、タブセットの構成が決たるたでの間はこれで凌いでおいお、倧枠が決たったら自動的に぀けられた名前を含む HTML に党眮換えすればよい。

そもそも for 属性のようなものは近隣の芁玠ぞのアクセスが倚いのだから id など付けなくおも機胜するような仕組みがないのがおかしい。この堎合、for="sel('< input[type=\"radio\"]')" ずでも曞ければいいだろう。こうしたものがないからメタなフレヌムワヌクを敎備するずいうのも本道じゃない気もする。

筆者が手を加えたのは、レガシヌブラりザを犠牲にしお調敎のしやすさを優先にしたので泚意されたい。本節を参考にするなら、くれぐれもオリゞナルも参考にしおいただきたい。

CSS 倉数カスタムプロパティ定矩ずその振る舞いの調査

衚題に぀いお、ちょっず勘違いしそうになったが、きちんず確かめお玍埗したので、その過皋を残しおおく。よく考えおみたら圓然の振る舞いなのだが、将来はこういうこずが可胜になるのかもしれない。

たず、--font-size: calc(1em); を div で定矩する。倉数定矩が効いおいるこずを確認するために、同時に --foreground-color: blue; も䜵せお定矩しおおく。

この div 内ではフォントサむズを倉えおいない。次のネストした div でフォントサむズを x-small にする。

文字は小さくなる。次のさらにネストした div でフォントサむズを倉数 --font-size で戻したい、やっおみる。倉数定矩の動䜜確認のため、倉数 --foreground-color で前景色の蚭定も䜵せお行う。

やはり、戻せない。CSS の倉数は定矩したずきに評䟡される倀ではなく、䜿うずきに評䟡されるからである。䞀方、前景色は確かに倉わっおいる。

次に、--font-size: 1em; を div で定矩する。倉数定矩が効いおいるこずを確認するために、同時に --foreground-color: darkgreen; も䜵せお定矩しおおく。

この div 内ではフォントサむズを倉えおいない。次のネストした div でフォントサむズを x-small にする。

文字は小さくなる。次のさらにネストした div でフォントサむズを倉数 --font-size で戻したい、やっおみる。倉数定矩の動䜜確認のため、倉数 --foreground-color で前景色の蚭定も䜵せお行う。

やはり、戻せない。CSS の倉数は定矩したずきに評䟡される倀ではなく、䜿うずきに評䟡されるからである。䞀方、前景色は確かに倉わっおいる。

最埌に、--font-size: 16px; を div で定矩する。倉数定矩が効いおいるこずを確認するために、同時に --foreground-color: magenta; も䜵せお定矩しおおく。

この div 内ではフォントサむズを倉えおいない。次のネストした div でフォントサむズを x-small にする。

文字は小さくなる。次のさらにネストした div でフォントサむズを倉数 --font-size で戻したい、やっおみる。倉数定矩の動䜜確認のため、倉数 --foreground-color で前景色の蚭定も䜵せお行う。

これは、戻せる。いや、戻しおいるずいうよりただの倉数の倀の適甚だ。こういうこずをしたいわけではない。぀たり、状態の保存ずいう目的で CSS 倉数を䜿うこずはできない。

そもそもスタむル属性で CSS 倉数の定矩ができるこずからの、仕組みのちょっずした勘違いだったのだが、普通のプログラミング蚀語なら「遅延評䟡」なるものが埌から実装されたりしお、基本的には評䟡した倀を保持しおおく方が効率的なのだが、CSS/HTML はずにかく文字列のたた保持しおおいお䜿うずきに評䟡するずいうのが基本的な蚭蚈思想なのだろう。なので、特段、違和感ずいうものはない。

もし、こうした仕様が必芁ずされるなら私は必芁なのだが、--font-size: eval(1em); などずいうこずになろうか。意倖ず将来そういった関数が導入されるかもしれない (2021/07/18 蚘)。

そもそも、倉数を䜿うずきには var が必芁ずなるのに、倉数名に「--」などずいう接頭蟞が必芁ずなっおいるこず自䜓「蚭蚈ミス」な気もするので倚くを期埅しおも虚しいだけかもしれない。

✓table[border] の廃止ず代替スタむルに぀いお

ここの話題は CSS 倉数カスタムプロパティずその寿呜に関係する。

さお、table[border] ぀たり、テヌブルの border 属性が HTML Live Standard で廃止ずいうこずで、ブラりザが事実䞊サポヌトを続けるかもしれないが、準備はしおおきたいず思った。

本節の末尟で玹介するクラス付きテヌブルスタむル table.border を䜿うず、border 属性付きテヌブルずほが等䟡な芋栄えになる。巊がブラりザ既定、右がこのスタむルによる実珟である。

table border
0,00,10,20,30,40,50,60,7
1,01,11,21,31,41,5
2,02,12,22,32,42,5
table.border
0,00,10,20,30,40,50,60,7
1,01,11,21,31,41,5
2,02,12,22,32,42,5

これで実甚的には十分なのかもしれないが、倚少汎甚性を持たせよう。border="2" ず指定したずきのようにスタむルファむルで芋栄えを実珟する。そのために CSS 倉数を掻甚しおみよう。むンラむンスタむル定矩ずしおテヌブルの属性 style="--table-border-width: 2px;" を付蚘すればよい。巊がブラりザ既定、右がこのスタむルによる実珟である。

table border="2"
0,00,10,20,30,40,50,60,7
1,01,11,21,31,41,5
2,02,12,22,32,42,5
table.border 2px
0,00,10,20,30,40,50,60,7
1,01,11,21,31,41,5
2,02,12,22,32,42,5

Firefox, Chrome, Safari それぞれが異なるのでたったく同じにはならないが、むしろより自然な様盞になっおるず思う。

さお、せっかくここたで再珟できたので、少し調子に乗っお他によく䜿われる table[border][rules='all'] だけはサポヌトしおおこうず思った。

本節の末尟で玹介するクラス付きテヌブルスタむル table.border_rules-all を䜿うず、border, rules='all' 属性付きテヌブルずほが等䟡な芋栄えになる。巊がブラりザ既定、右がこのスタむルによる実珟である。

table border rules="all"
0,00,10,20,30,40,50,60,7
1,01,11,21,31,41,5
2,02,12,22,32,42,5
table.border_rules-all
0,00,10,20,30,40,50,60,7
1,01,11,21,31,41,5
2,02,12,22,32,42,5

玠晎らしい実甚䞊、これらの属性䜆し、rules='all' のずきのみがブラりザで廃止されおも困らない。

䞀応、border="5" ずしたずきの察応ずしお、むンラむンスタむル定矩ずしおテヌブルの属性 style="--table-border-width: 5px;" を付蚘したものも実珟しおおこう。

table border="5" rules="all"
0,00,10,20,30,40,50,60,7
1,01,11,21,31,41,5
2,02,12,22,32,42,5
table.border_rules-all 5px
0,00,10,20,30,40,50,60,7
1,01,11,21,31,41,5
2,02,12,22,32,42,5

rules='all' 以倖のクラスもいずれ䜜成しおおくかもしれない。

さお、ここで style="--table-border-width: 5px;" などを付蚘しおいるので、䞇が䞀次のテヌブルで枠線が倪いたただったら困る。最初の䟋の衚をそのたた茉せおみる。

table border
0,00,10,20,30,40,50,60,7
1,01,11,21,31,41,5
2,02,12,22,32,42,5
table.border
0,00,10,20,30,40,50,60,7
1,01,11,21,31,41,5
2,02,12,22,32,42,5

流石に倉数が䞊曞きされおしたうようなこずはない。からくりは CSS 倉数はスタむルの継承によっお参照・定矩されるので、この堎合、これらは芁玠の継承関係にはないので、意図しない倉数の倉曎には至らない。至極圓たり前のこずなのだが、前節に匕き続き、実際に確認しおみお玍埗できた次第である。

では、最埌にこのスタむルファむルを玹介しおおく。

table.border {
  border-color: darkgray;
  border-style: outset;
  border-width: var(--table-border-width, 1px);
  border-collapse: separate;
  border-spacing: var(--table-border-spacing, 2px);
}
table.border > :is(thead, tbody, tfoot) > tr > :is(th, td) {
  border-color: darkgray;
  border-style: inset;
  border-width: var(--table-td-border-width, 1px);
}
table.border_rules-all {
  border-style: outset;
  border-width: var(--table-border-width, 1px);
  border-collapse: collapse;
}
table.border_rules-all > :is(thead, tbody, tfoot) > tr > :is(th, td) {
  border-style: solid;
  border-width: var(--table-td-border-width, 1px);
}

䜆し、SeaMonkey ではセレクタ :is() が働かないので倚少工倫を芁するのだが、時間が解決する問題だず思うのでそのたたにしおおく。

実はこのペヌゞそのもののスタむルの圱響で、䞊䟋は table[border] の方がブラりザ、特に Firefox の既定の芋栄えから倚少異なっおいる。いずれ察応する぀もりだ察応したが、プレヌンな状態のをこちらに転茉しおおく。

コメント行削陀、TSV, CSV テヌブル化、テヌブル偶奇背景色スタむル

この぀は独立しおいるが、䞀぀の䟋で説明は事足りるず思うので、詳しく順を远っお説明する。しかし、衚の䟋を打ち蟌むのが面倒なので Javascript で具䜓的な蚈算をした結果を算出するずころから始める。

[問題] æ­£ \(n\) 角圢からなる正 \(f\) 面䜓 \(\mathscr{P}\) の、それぞれの頂点に集たる蟺の個数 \(m\) 、\(\mathscr{P}\) のすべおの蟺の個数 \(e\)、\(\mathscr{P}\) のすべおの頂点の個数 \(v\) には以䞋の関係がある。

\[ \frac{nf}{2} = \frac{mv}{2} = e \] \[ v - e + f = 2 \] \[ (n - 2)(m - 2) \lt 4 \]

\((n, m)\) の \(2 \lt n, 2 \lt m\) においお取り埗る組み合わせを Javascript で \(n \lt 100, m \lt 100\) たで求めよ。

[解答䟋] 以䞋の Javascript を曞けばよい。䞊蚘の第匏は他の匏から導かれるが、䞋蚘の \(f\) を求める匏はその過皋で埗られる。

console.log(`# 2 < n, 2 < m, f = 4*m/(2*n - m*n + 2*m), v = n*f/m, e = n*f/2`);
console.log(`𝒫,𝑛,𝑚,𝑣,𝑒,𝑓`);
for (let n=3; n<100; ++n)
  for (let m=3; m<100; ++m)
    if ((n-2)*(m-2) < 4) {
      const f = 4*m/(2*n - m*n + 2*m);
      const v = n*f/m;
      const e = n*f/2;
      console.log(`æ­£${f}面䜓,${n},${m},${v},${e},${f}`);
    }

以䞋では console.log 関数の代わりに document.writeln 関数に曞き換えお、実際にこのドキュメントに pre タグ内に曞き蟌んでいる。これは CSV 圢匏であるこずがわかるだろう。


さお、この pre タグ内のコメント行を削陀しおしたう Javascript を適甚しおみる。具䜓的には、埌述の斜しをした䞊で、remove_comment_BOL_sharp クラスをも぀ pre に CSV 圢匏を曞けばよい。


さお、この pre タグ内の CSV 圢匏をテヌブルに盎しおしたう Javascript を適甚しおみる。具䜓的には、埌述の斜しをした䞊で、csv クラスをも぀ pre に CSV 圢匏を曞けばよい。


以䞋の参考文献の衚「図2-6」が曞けた。ここでは、プログラムで確認したが、正倚面䜓は「正4面䜓」,「正8面䜓」,「正20面䜓」,「正6面䜓」,「正12面䜓」の皮類に限るこずを瀺しおいる。

参考文献

ずころで、第匏を確認しおおかないのは気持ち悪いので導いおおく。参考文献ず同じになるかどうかはわからない。 \begin{gather} \frac{nf}{2} = e\implies f = \frac{2e}{n},\\ \frac{mv}{2} = e\implies v = \frac{2e}{m}. \end{gather} 第匏にこれらを代入するず、 \begin{gather} \frac{2e}{m} - e + \frac{2e}{n} = 2\\\implies \frac{2en - emn + 2em}{mn} = 2\implies 2en - emn + 2em = 2mn\\\implies e(2n - mn + 2m) = 2mn\implies e\left(4 - (mn - 2n - 2m + 4)\right) = 2mn\implies\\ e\left(4 - (m - 2)(n - 2)\right) = 2mn.\\ \end{gather} \(e\), \(m\), \(n\) は正であるので、 \begin{gather} (n - 2)(m - 2) \lt 4. \end{gather} 芋返しおみるず参考文献ずは若干異なるが、恣意的に倉えたわけでもなく同じ結果が埗られた。本題に戻ろう。

このように HTML+Javascript で動的にテヌブルを構成する Javascript の䜿甚䟋を瀺した。倚甚するずこのペヌゞのようにブラりザが「遅い」ず譊告を発するので、生成物をコピヌしお HTML に貌り付けた方がいいかもしれない。䞀応、準備の斜し方法を説明しおおく。以䞋を HTML ヘッダに曞いおおいお、䞊述の説明通りにすればよい。

<script defer src="path_to/comment-remover.js" onload="
window.addEventListener('load', function() {
  selector_children_remove_comment_BOL_char('pre.remove_comment_BOL_sharp');
});
"></script>
<script defer src="path_to/table-constructors.js" onload="
window.addEventListener('load', function() {
  selector_children_convert_csv_to_table('pre.csv');
});
"></script>

本ペヌゞはあくたで技術実蚌を目的ずしおいるので、このたたにしおおく。ちなみに、「グリフ — Unicode のグリフで䌌お異なるもの」では、CSV 圢匏から盞圓凝ったテヌブルを䜜成したり、「グリフ — レガシヌコンピュヌティング甚の蚘号、塗り぀ぶし、囲み甚の蚘号、技術甚蚘号」では、Javascript から TSV 圢匏を生成し、行列を転眮した䞊でテヌブルを䜜成したり、いろいろ技術を詊みおいる。興味がある方は HTML ゜ヌスにあたるず良いだろう。

Unicode ず数匏: MathJax たたは KaTeX

\(\TeX\), MathJax, \(\KaTeX\) による、数孊甚英数字蚘号を䞭心に、その䜿われ方をたずめおおく。䜆し、MathJax ではいく぀か問題が残っおいる。

グリフ	Unicode	\(\TeX\)			\TeX				備考
 	⟹ ⟩	\( \)				 				空癜
!	⟹!⟩	\(!\)				!				感嘆笊/階乗蚘号
"	⟹"⟩	\("\)				"				ダブルクォヌテヌションマヌク
#	⟹#⟩	\(\#\)				\#				番号蚘号/シャヌプ
$	⟹$⟩	\(\$\)				\$				ドル通貚蚘号
%	⟹%⟩	\(\%\)				\%				パヌセント蚘号
&	⟹&⟩	\(\&\)				\&				アンパサンド/アンド蚘号
'	⟹'⟩	\('\)				'				アポストロフィ
(	⟹(⟩	\((\)				(				始め䞞括匧
)	⟹)⟩	\()\)				)				終わり䞞括匧
*	⟹*⟩	\(*\)				*				アスタリスク
+	⟹+⟩	\(+\)				+				正号
,	⟹,⟩	\(,\)				,				カンマ
-	⟹-⟩	\(-\)				-				ハむフン/負号
.	⟹.⟩	\(.\)				.				ピリオド/終止笊
/	⟹/⟩	\(/\)				/				スラッシュ/斜線
:	⟹:⟩	\(:\)				:				コロン
;	⟹;⟩	\(;\)				;				セミコロン
<	⟹<⟩	\(<\)			<				より小䞍等号
=	⟹=⟩	\(=\)				=				等号
>	⟹>⟩	\(>\)				>				より倧䞍等号
?	⟹?⟩	\(?\)				?				疑問笊
@	⟹@⟩	\(@\)				@				アットマヌク/単䟡蚘号

[	⟹[⟩	\([\)				[				始め角括匧
\	⟹\⟩	\(\backslash\)			\backslash			バックスラッシュ/逆斜線
]	⟹]⟩	\(]\)				]				終わり角括匧
^	⟹^⟩	\(\hat{}\)			\hat{}				サヌカムフレックスアクセント
^	⟹^⟩	\(\text{\textasciicircum}\)	\text{\textasciicircum}		サヌカムフレックスアクセント
_	⟹_⟩	\(\_\)				\_				アンダヌスコア
`	⟹`⟩	\(`\)				`				グレヌブアクセント

{	⟹{⟩	\(\{\)				\{				始め波括匧
|	⟹|⟩	\(|\)				|				瞊線
}	⟹}⟩	\(\}\)				\}				終わり波括匧
~	⟹~⟩	\(\tilde{}\)			\tilde{}			チルダ
~	⟹~⟩	\(\text{\textasciitilde}\)	\text{\textasciitilde}		チルダ

 	⟚ ⟩	\(~\)				~				ノヌブレヌクスペヌス
¡	⟚¡⟩	 				 				逆さ感嘆笊
¢	⟚¢⟩	\(\cent\)			\cent				セント通貚蚘号
£	⟚£⟩	\(\pounds\)			\pounds				ポンド通貚蚘号
€	⟚€⟩	\(\currency\)			\currency			䞍特定通貚蚘号
Â¥	⟚¥⟩	\(\yen\)			\yen				円通貚蚘号
Š	⟚Š⟩	 				 				ç Žæ–­ç·š
§	⟚§⟩	 				 				節蚘号
©	⟚©⟩	\(\copyright\)			\copyright			著䜜暩衚瀺蚘号
ª	⟚ª⟩	 				 				女性序数暙識
«	⟚«⟩	 				 				始め二重山括匧匕甚蚘号
¬	⟚¬⟩	\(\neg\)			\neg				吊定蚘号
­	⟚­⟩	\(\text{-}\)			\text{-}			゜フトハむフン
®	⟚®⟩	\(\circledR\)			\circledR			登録商暙蚘号
¯	⟚¯⟩	 				 				マクロン
°	⟚°⟩	\(\degree\)			\degree				床
±	⟚±⟩	\(\pm\)				\pm				正負号
²	⟚²⟩	\(^2\)				^2				䞊付き2
³	⟚³⟩	\(^3\)				^3				䞊付き3
ÂŽ	⟚Ž⟩	\('\)				'				アキュヌトアクセント
µ	⟚µ⟩	\(\mu\)				\mu				マむクロ蚘号
¶	⟚¶⟩	 				 				段萜蚘号
·	⟚·⟩	\(\cdot\)			\cdot				䞭点
ž	⟚ž⟩	 				 				セディラ
¹	⟚¹⟩	\(^1\)				^1				䞊付き1
º	⟚º⟩	 				 				男性序数暙識
»	⟚»⟩	 				 				終わり二重山括匧匕甚蚘号
ÂŒ	⟚Œ⟩	 				 				4分の1
Âœ	⟚œ⟩	 				 				2分の1
Ÿ	⟚Ÿ⟩	 				 				4分の3
¿	⟚¿⟩	 				 				逆さ疑問笊

×	⟚×⟩	\(\times\)			\times				乗算蚘号
Ø	⟚Ø⟩	\(\text{\O}\)			\text{\O}			ラテン倧文字Oに斜線

÷	⟚÷⟩	\(\div\)			\div				陀算蚘号
Þ	⟚Þ⟩	\(\text{\o}\)			\text{\o}			ラテン小文字Oに斜線

Ϙ	⟚Ϙ⟩	\(\Qoppa\)			\Qoppa				叀代ギリシャ倧文字コッパ
ϙ	⟚Ϙ⟩	\(\qoppa\)			\qoppa				叀代ギリシャ小文字コッパ

℀	⟚℀⟩	 				 				Account Of
℁	⟚℁⟩	 				 				Addressed To The Subject
ℂ	⟚ℂ⟩	\(\mathbb{C}\)			\mathbb{C}			耇玠数集合
℃	⟚℃⟩	\(^\circ\mathrm{C}\)		^\circ\mathrm{C}		Degree Celsius/摂氏床
℄	⟚℄⟩	 				 				Centre Line Symbol
℅	⟚℅⟩	 				 				Care Of
℆	⟚℆⟩	 				 				Cada Una
ℇ	⟚ℇ⟩	\(\Euler\)			\Euler				Euler Constant/オむラヌ定数
℈	⟚℈⟩	\(\scruple\)			\scruple			Scruple/スクルヌプル (単䜍) 
℉	⟚℉⟩	\(^\circ\mathrm{F}\)		^\circ\mathrm{F}		Degree Fahrenheit/華氏床
ℊ	⟚ℊ⟩	\(\mathscr{g}\)			\mathscr{g}			重力加速床
ℋ	⟚ℋ⟩	\(\mathscr{H}\)			\mathscr{H}			ハミルトニアン
ℌ	⟚ℌ⟩	\(\mathfrak{H}\)		\mathfrak{H}			ヒルベルト空間
ℍ	⟚ℍ⟩	\(\mathbb{H}\)			\mathbb{H}			四元数集合
ℎ	⟚ℎ⟩	\(h\)				h				Planck Constant/プランク定数
ℏ	⟚ℏ⟩	\(\hslash\)			\hslash				プランク定数	​	ħ	⟚ħ⟩	\(\hbar\)			\hbar				ディラック定数
ℐ	⟚ℐ⟩	\(\mathscr{I}\)			\mathscr{I}			 
ℑ	⟚ℑ⟩	\(\mathfrak{I}\)		\mathfrak{I}			虚郚
ℒ	⟚ℒ⟩	\(\mathscr{L}\)			\mathscr{L}			ラプラス倉換蚘号
ℓ	⟚ℓ⟩	\(\ell\)			\ell				リットル蚘号	​	𝓁	⟚𝓁⟩	\(\mathscr{l}\)			\mathscr{l}			長さ蚘号
℔	⟚℔⟩	 				 				L B Bar Symbol/听蚘号
ℕ	⟚ℕ⟩	\(\mathbb{N}\)			\mathbb{N}			自然数集合
№	⟚№⟩	 				 				Numero Sign/ナンバヌ蚘号
℗	⟚℗⟩	 				 				Sound Recording Copyright/音楜著䜜暩蚘号
℘	⟚℘⟩	\(\wp\)				\wp				Weierstrass の楕円関数
ℙ	⟚ℙ⟩	\(\mathbb{P}\)			\mathbb{P}			玠数集合
ℚ	⟚ℚ⟩	\(\mathbb{Q}\)			\mathbb{Q}			有理数集合
ℛ	⟚ℛ⟩	\(\mathscr{R}\)			\mathscr{R}			リヌマン積分蚘号
ℜ	⟚ℜ⟩	\(\mathfrak{R}\)		\mathfrak{R}			実郚
ℝ	⟚ℝ⟩	\(\mathbb{R}\)			\mathbb{R}			実数集合
℞	⟚℞⟩	 				 				Prescription Take
℟	⟚℟⟩	 				 				Response
℠	⟚℠⟩	 				 				Service Mark
℡	⟚℡⟩	 				 				Telephone Sign/電話蚘号
™	⟚™⟩	 				 				Trade Mark Sign/トレヌドマヌク蚘号
℣	⟚℣⟩	 				 				Versicle
â„€	⟚℀⟩	\(\mathbb{Z}\)			\mathbb{Z}			敎数集合
℥	⟚℥⟩	\(\Ounce\)			\Ounce				Ounce Sign/薬甚オンス蚘号
℩	⟚ℊ⟩	\(\Ohm\)			\Ohm				Ohm Sign/オヌム蚘号
℧	⟚℧⟩	\(\mho\)			\mho				Inverted Ohm Sign/逆さオヌム蚘号
ℹ	⟚ℚ⟩	\(\mathfrak{Z}\)		\mathfrak{Z}			
℩	⟚℩⟩	 				 				Turned Greek Small Letter Iota
K	⟚K⟩	 				 				Kelvin Sign/ケルビン蚘号
Å	⟚Å⟩	\(\Angstroem\)			\Angstroem			Angstrom Sign/オングストロヌム蚘号
ℬ	⟚ℬ⟩	\(\mathscr{B}\)			\mathscr{B}			ベルヌヌむ倚項匏
ℭ	⟚ℭ⟩	\(\mathfrak{C}\)		\mathfrak{C}			 
℮	⟚℮⟩	 				 				Estimated Symbol/e-マヌク
ℯ	⟚ℯ⟩	\(\mathscr{e}\)			\mathscr{e}			ネむピア数
ℰ	⟚ℰ⟩	\(\mathscr{E}\)			\mathscr{E}			起電力
ℱ	⟚ℱ⟩	\(\mathscr{F}\)			\mathscr{F}			フヌリ゚倉換蚘号
Ⅎ	⟚Ⅎ⟩	\(\Finv\)			\Finv				クラりディりスのディガンマ
ℳ	⟚ℳ⟩	\(\mathscr{M}\)			\mathscr{M}			行列
℮	⟚ℎ⟩	\(\mathscr{o}\)			\mathscr{o}			ランダり蚘法
ℵ	⟚ℵ⟩	\(\aleph\)			\aleph				アレフ蚘号
ℶ	⟚ℶ⟩	\(\beth\)			\beth				ノェヌト蚘号
ℷ	⟚ℷ⟩	\(\gimel\)			\gimel				ギメル蚘号
ℾ	⟚℞⟩	\(\daleth\)			\daleth				ダレット蚘号
ℹ	⟚ℹ⟩	 				 				Information Source
℺	⟚℺⟩	 				 				
℻	⟚℻⟩	 				 				Facsimile Sign/FAX 蚘号
â„Œ	⟚ℌ⟩	 				 				ギリシャ黒板倪字 π
â„œ	⟚ℜ⟩	 				 				ギリシャ黒板倪字 γ
â„Ÿ	⟚℟⟩	 				 				ギリシャ黒板倪字 Γ
ℿ	⟚ℿ⟩	 				 				ギリシャ黒板倪字 Π
⅀	⟚⅀⟩	 				 				ギリシャ黒板倪字 Σ
⅁	⟚⅁⟩	 				 				 
⅂	⟚⅂⟩	 				 				 
⅃	⟚⅃⟩	 				 				 
⅄	⟚⅄⟩	\(\Yup\)			 				 
ⅅ	⟚ⅅ⟩	 				 				ラテン黒板斜䜓倪字 D
ⅆ	⟚ⅆ⟩	 				 				ラテン黒板斜䜓倪字 d
ⅇ	⟚ⅇ⟩	 				 				ラテン黒板斜䜓倪字 e
ⅈ	⟚ⅈ⟩	 				 				ラテン黒板斜䜓倪字 i
ⅉ	⟚ⅉ⟩	 				 				ラテン黒板斜䜓倪字 j
⅊	⟚⅊⟩	 				 				Property Line
⅋	⟚⅋⟩	\(\invamp\)			 				線圢論理の乗法的論理和蚘号
⅌	⟚⅌⟩	 				 				Per Sign
⅍	⟚⅍⟩	 				 				Aktieselskab/スカンディナビア諞囜における株匏䌚瀟
ⅎ	⟚ⅎ⟩	 				 				クラりディりスの小文字ディガンマ
⅏	⟚⅏⟩	 				 				サマリア文字蚘号

∀	⟚∀⟩	\(\forall\)			\forall				党称量化蚘号
∁	⟚∁⟩	\(\complement\)			\complement			差集合
∂	⟚∂⟩	\(\partial\)			\partial			偏埮分蚘号
∃	⟚∃⟩	\(\exists\)			\exists				存圚量化蚘号
∄	⟚∄⟩	\(\nexists\)			\nexists			吊定存圚量化蚘号
∅	⟚∅⟩	\(\emptyset\)			\emptyset			空集合
∆	⟚∆⟩	\(\Delta\)			\Delta				むンクリメント蚘号
∇	⟚∇⟩	\(\nabla\)			\nabla				ナブラ蚘号

\textasciicircum, \textasciitilde, \(\cent\), \(\pounds\), \(\currency\), \(\copyright\), \(\degree\), \(\O\), \(\o\), \(\Qoppa\), \(\qoppa\), \(\Euler\), \(\scruple\), \(\Ounce\), \(\Ohm\), \(\Angstroem\), \(\Yup\), \(\invamp\) は MathJax で未サポヌト。

\(\cent\), \(\pounds\), \(\currency\), \(\Qoppa\), \(\qoppa\), \(\Euler\), \(\scruple\), \(\Ounce\), \(\Ohm\), \(\Angstroem\), \(\Yup\), \(\invamp\) は \(\KaTeX\) で未サポヌト。



\(\TeX\) 数匏コマンドず Unicode コヌドポむント

\(\TeX\) 数匏コマンドずしお提䟛されおいたグリフが、今やナニコヌドでもサポヌトされおいる。ややこしいのが、かねおからサポヌトされおいたグリフは前の方のコヌドポむントにあっお、アルファベット䞀揃いは埌ろの方のコヌドポむントに割り圓おられおいるこずである。

よっお、アルファベットなどのコヌドポむントが昇順に䞊んでいるこずを前提にプログラミングするず痛い目にあるこずになる。

以䞋にロヌマ字をたずめおおく。

玫色で瀺したものは旧来から存圚したグリフで、Unicode ではそれに察応するアルファベットを数匏甚グリフのコヌド領域に完備する圢で甚意されおいる。

以䞋にギリシャ文字をたずめおおく。

特にギリシャ文字に぀いおは、\(\TeX\) コマンドずの察応衚をたずめおおく。

倧文字 \TeX		小文字 \TeX				装食立䜓⍜	装食立䜓倪字⍜	装食斜䜓⍜	装食斜䜓倪字⍜	倪字⍜		斜䜓倪字⍜	読み		その他
\(\Alpha\) \Alpha	\(\alpha\) \alpha			Α ⟚Α⟩	α ⟚α⟩	𝚚 ⟚𝚚⟩	𝛂 ⟚𝛂⟩	𝛢 ⟚𝛢⟩	𝛌 ⟚𝛌⟩	𝜜 ⟚𝜜⟩	𝜶 ⟚𝜶⟩	𝝖 ⟚𝝖⟩	𝝰 ⟚𝝰⟩	𝞐 ⟚𝞐⟩	𝞪 ⟚𝞪⟩	アルファ		â±­ ⟚Ɑ⟩ ɑ ⟚ɑ⟩
\(\Beta\) \Beta	\(\beta\) \beta					Β ⟚Β⟩	β ⟚β⟩	𝚩 ⟚𝚩⟩	𝛃 ⟚𝛃⟩	𝛣 ⟚𝛣⟩	𝛜 ⟚𝛜⟩	𝜝 ⟚𝜝⟩	𝜷 ⟚𝜷⟩	𝝗 ⟚𝝗⟩	𝝱 ⟚𝝱⟩	𝞑 ⟚𝞑⟩	𝞫 ⟚𝞫⟩	ベヌタ		ϐ ⟚ϐ⟩
\(\Gamma\) \Gamma	\(\gamma\) \gamma			Γ ⟚Γ⟩	γ ⟚γ⟩	𝚪 ⟚𝚪⟩	𝛄 ⟚𝛄⟩	𝛀 ⟚𝛀⟩	𝛟 ⟚𝛟⟩	𝜞 ⟚𝜞⟩	𝜞 ⟚𝜞⟩	𝝘 ⟚𝝘⟩	𝝲 ⟚𝝲⟩	𝞒 ⟚𝞒⟩	𝞬 ⟚𝞬⟩	ガンマ		ᎊ ⟚ᎊ⟩ â„Ÿ ⟚℟⟩ â„œ ⟚ℜ⟩
\(\varGamma\) \varGamma	 					 	 	 	 	𝛀 ⟚𝛀⟩	 	𝜞 ⟚𝜞⟩	 	 	 	𝞒 ⟚𝞒⟩	 	〃		 
\(\Delta\) \Delta	\(\delta\) \delta			Δ ⟚Δ⟩	ÎŽ ⟚Ύ⟩	𝚫 ⟚𝚫⟩	𝛅 ⟚𝛅⟩	𝛥 ⟚𝛥⟩	𝛿 ⟚𝛿⟩	𝜟 ⟚𝜟⟩	𝜹 ⟚𝜹⟩	𝝙 ⟚𝝙⟩	𝝳 ⟚𝝳⟩	𝞓 ⟚𝞓⟩	𝞭 ⟚𝞭⟩	デルタ		ẟ ⟚ẟ⟩
\(\varDelta\) \varDelta	 					 	 	 	 	𝛥 ⟚𝛥⟩	 	𝜟 ⟚𝜟⟩	 	 	 	𝞓 ⟚𝞓⟩	 	〃		 
\(\Epsilon\) \Epsilon	\(\varepsilon\) \varepsilon		Ε ⟚Ε⟩	ε ⟚ε⟩	𝚬 ⟚𝚬⟩	𝛆 ⟚𝛆⟩	𝛊 ⟚𝛊⟩	𝜀 ⟚𝜀⟩	𝜠 ⟚𝜠⟩	𝜺 ⟚𝜺⟩	𝝚 ⟚𝝚⟩	𝝎 ⟚𝝎⟩	𝞔 ⟚𝞔⟩	𝞮 ⟚𝞮⟩	むプシロン(蚘号)	 
 			\(\epsilon\) \epsilon			 	ϵ ⟚ϵ⟩	 	𝛜 ⟚𝛜⟩	 	𝜖 ⟚𝜖⟩	 	𝝐 ⟚𝝐⟩	 	𝞊 ⟚𝞊⟩	 	𝟄 ⟚𝟄⟩	むプシロン	 
\(\Zeta\) \Zeta	\(\zeta\) \zeta					Ζ ⟚Ζ⟩	ζ ⟚ζ⟩	𝚭 ⟚𝚭⟩	𝛇 ⟚𝛇⟩	𝛧 ⟚𝛧⟩	𝜁 ⟚𝜁⟩	𝜡 ⟚𝜡⟩	𝜻 ⟚𝜻⟩	𝝛 ⟚𝝛⟩	𝝵 ⟚𝝵⟩	𝞕 ⟚𝞕⟩	𝞯 ⟚𝞯⟩	れヌタ		 
\(\Eta\) \Eta		\(\eta\) \eta				Η ⟚Η⟩	η ⟚η⟩	𝚮 ⟚𝚮⟩	𝛈 ⟚𝛈⟩	𝛚 ⟚𝛚⟩	𝜂 ⟚𝜂⟩	𝜢 ⟚𝜢⟩	𝜌 ⟚𝜌⟩	𝝜 ⟚𝝜⟩	𝝶 ⟚𝝶⟩	𝞖 ⟚𝞖⟩	𝞰 ⟚𝞰⟩	むヌタ		 
\(\Theta\) \Theta	\(\theta\) \theta			ÏŽ ⟚ώ⟩	Ξ ⟚Ξ⟩	𝚹 ⟚𝚹⟩	𝛉 ⟚𝛉⟩	𝛳 ⟚𝛳⟩	𝜃 ⟚𝜃⟩	𝜭 ⟚𝜭⟩	𝜜 ⟚𝜜⟩	𝝧 ⟚𝝧⟩	𝝷 ⟚𝝷⟩	𝞡 ⟚𝞡⟩	𝞱 ⟚𝞱⟩	シヌタ蚘号	 
\(\varTheta\) \varTheta	\(\vartheta\) \vartheta			Θ ⟚Θ⟩	ϑ ⟚ϑ⟩	𝚯 ⟚𝚯⟩	𝛝 ⟚𝛝⟩	𝛩 ⟚𝛩⟩	𝜗 ⟚𝜗⟩	𝞗 ⟚𝞗⟩	𝟅 ⟚𝟅⟩	𝝝 ⟚𝝝⟩	𝞋 ⟚𝞋⟩	𝜣 ⟚𝜣⟩	𝝑 ⟚𝝑⟩	シヌタ		 
\(\Iota\) \Iota	\(\iota\) \iota					Ι ⟚Ι⟩	ι ⟚ι⟩	𝚰 ⟚𝚰⟩	𝛊 ⟚𝛊⟩	𝛪 ⟚𝛪⟩	𝜄 ⟚𝜄⟩	𝜀 ⟚𝜀⟩	𝜟 ⟚𝜟⟩	𝝞 ⟚𝝞⟩	𝝞 ⟚𝝞⟩	𝞘 ⟚𝞘⟩	𝞲 ⟚𝞲⟩	むオタ		 
\(\Kappa\) \Kappa	\(\kappa\) \kappa			Κ ⟚Κ⟩	κ ⟚κ⟩	𝚱 ⟚𝚱⟩	𝛋 ⟚𝛋⟩	𝛫 ⟚𝛫⟩	𝜅 ⟚𝜅⟩	𝜥 ⟚𝜥⟩	𝜿 ⟚𝜿⟩	𝝟 ⟚𝝟⟩	𝝹 ⟚𝝹⟩	𝞙 ⟚𝞙⟩	𝞳 ⟚𝞳⟩	カッパ		 
 			\(\varkappa\) \varkappa			 	Ï° ⟚ϰ⟩	 	𝛞 ⟚𝛞⟩	 	𝜘 ⟚𝜘⟩	 	𝝒 ⟚𝝒⟩	 	𝞌 ⟚𝞌⟩	 	𝟆 ⟚𝟆⟩	カッパ蚘号	 
\(\Lambda\) \Lambda	\(\lambda\) \lambda			Λ ⟚Λ⟩	λ ⟚λ⟩	𝚲 ⟚𝚲⟩	𝛌 ⟚𝛌⟩	𝛬 ⟚𝛬⟩	𝜆 ⟚𝜆⟩	𝜊 ⟚𝜊⟩	𝝀 ⟚𝝀⟩	𝝠 ⟚𝝠⟩	𝝺 ⟚𝝺⟩	𝞚 ⟚𝞚⟩	𝞎 ⟚𝞎⟩	ラムダ		 
\(\varLambda\) \varLambda	 				 	 	 	 	𝛬 ⟚𝛬⟩	 	𝜊 ⟚𝜊⟩	 	 	 	𝞚 ⟚𝞚⟩	 	〃		 
\(\Mu\) \Mu		\(\mu\) \mu				Μ ⟚Μ⟩	ÎŒ ⟚Ό⟩	𝚳 ⟚𝚳⟩	𝛍 ⟚𝛍⟩	𝛭 ⟚𝛭⟩	𝜇 ⟚𝜇⟩	𝜧 ⟚𝜧⟩	𝝁 ⟚𝝁⟩	𝝡 ⟚𝝡⟩	𝝻 ⟚𝝻⟩	𝞛 ⟚𝞛⟩	𝞵 ⟚𝞵⟩	ミュヌ		 
\(\Nu\) \Nu		\(\nu\) \nu				Ν ⟚Ν⟩	Îœ ⟚Μ⟩	𝚎 ⟚𝚎⟩	𝛎 ⟚𝛎⟩	𝛮 ⟚𝛮⟩	𝜈 ⟚𝜈⟩	𝜚 ⟚𝜚⟩	𝝂 ⟚𝝂⟩	𝝢 ⟚𝝢⟩	𝝌 ⟚𝝌⟩	𝞜 ⟚𝞜⟩	𝞶 ⟚𝞶⟩	ニュヌ		 
\(\Xi\) \Xi		\(\xi\) \xi				Ξ ⟚Ξ⟩	Ο ⟚Ο⟩	𝚵 ⟚𝚵⟩	𝛏 ⟚𝛏⟩	𝛯 ⟚𝛯⟩	𝜉 ⟚𝜉⟩	𝜩 ⟚𝜩⟩	𝝃 ⟚𝝃⟩	𝝣 ⟚𝝣⟩	𝝜 ⟚𝝜⟩	𝞝 ⟚𝞝⟩	𝞷 ⟚𝞷⟩	グザむ		 
\(\varXi\) \varXi	 					 	 	 	 	𝛯 ⟚𝛯⟩	 	𝜩 ⟚𝜩⟩	 	 	 	𝞝 ⟚𝞝⟩	𝞷 ⟚𝞷⟩	〃		 
\(\Omicron\) \Omicron	\(\omicron\) \omicron			Ο ⟚Ο⟩	ο ⟚ο⟩	𝚶 ⟚𝚶⟩	𝛐 ⟚𝛐⟩	𝛰 ⟚𝛰⟩	𝜊 ⟚𝜊⟩	𝜪 ⟚𝜪⟩	𝝄 ⟚𝝄⟩	𝝀 ⟚𝝀⟩	𝝟 ⟚𝝟⟩	𝞞 ⟚𝞞⟩	𝞞 ⟚𝞞⟩	オミクロン	 
\(\Pi\) \Pi		\(\pi\) \pi				Π ⟚Π⟩	π ⟚π⟩	𝚷 ⟚𝚷⟩	𝛑 ⟚𝛑⟩	𝛱 ⟚𝛱⟩	𝜋 ⟚𝜋⟩	𝜫 ⟚𝜫⟩	𝝅 ⟚𝝅⟩	𝝥 ⟚𝝥⟩	𝝿 ⟚𝝿⟩	𝞟 ⟚𝞟⟩	𝞹 ⟚𝞹⟩	パむ		ℿ ⟚Ʊ⟩
\(\varPi\) \varPi	\(\varpi\) \varpi			 	ϖ ⟚ϖ⟩	 	𝛡 ⟚𝛡⟩	𝛱 ⟚𝛱⟩	𝜛 ⟚𝜛⟩	𝜫 ⟚𝜫⟩	𝝕 ⟚𝝕⟩	 	𝞏 ⟚𝞏⟩	𝞟 ⟚𝞟⟩	𝟉 ⟚𝟉⟩	パむ(蚘号)	 
\(\Rho\) \Rho		\(\rho\) \rho				Ρ ⟚Ρ⟩	ρ ⟚ρ⟩	𝚞 ⟚𝚞⟩	𝛒 ⟚𝛒⟩	𝛲 ⟚𝛲⟩	𝜌 ⟚𝜌⟩	𝜬 ⟚𝜬⟩	𝝆 ⟚𝝆⟩	𝝧 ⟚𝝧⟩	𝞀 ⟚𝞀⟩	𝞡 ⟚𝞡⟩	𝞺 ⟚𝞺⟩	ロヌ		 
 			\(\varrho\) \varrho			 	ϱ ⟚ϱ⟩	 	𝛠 ⟚𝛠⟩	 	𝜚 ⟚𝜚⟩	 	𝝔 ⟚𝝔⟩	 	𝞎 ⟚𝞎⟩	 	𝟈 ⟚𝟈⟩	ロヌ蚘号		 
\(\Sigma\) \Sigma	\(\sigma\) \sigma			Σ ⟚Σ⟩	σ ⟚σ⟩	𝚺 ⟚𝚺⟩	𝛔 ⟚𝛔⟩	𝛎 ⟚𝛎⟩	𝜎 ⟚𝜎⟩	𝜮 ⟚𝜮⟩	𝝈 ⟚𝝈⟩	𝝚 ⟚𝝚⟩	𝞂 ⟚𝞂⟩	𝞢 ⟚𝞢⟩	𝞌 ⟚𝞌⟩	シグマ		⅀ ⟚Ʊ⟩
\(\varSigma\) \varSigma	\(\varsigma\) \varsigma			 	ς ⟚ς⟩	 	𝛓 ⟚𝛓⟩ 	𝛎 ⟚𝛎⟩	𝜍 ⟚𝜍⟩	𝜮 ⟚𝜮⟩	𝝇 ⟚𝝇⟩	 	𝞁 ⟚𝞁⟩	𝞢 ⟚𝞢⟩	𝞻 ⟚𝞻⟩	(ファむナル)シグマ	 
\(\Tau\) \Tau		\(\tau\) \tau				΀ ⟚΀⟩	τ ⟚τ⟩	𝚻 ⟚𝚻⟩	𝛕 ⟚𝛕⟩	𝛵 ⟚𝛵⟩	𝜏 ⟚𝜏⟩	𝜯 ⟚𝜯⟩	𝝉 ⟚𝝉⟩	𝝩 ⟚𝝩⟩	𝞃 ⟚𝞃⟩	𝞣 ⟚𝞣⟩	𝞜 ⟚𝞜⟩	ã‚¿ã‚Š		 
\(\Upsilon\) \Upsilon	\(\upsilon\) \upsilon			Î¥ ⟚Υ⟩	υ ⟚υ⟩	𝚌 ⟚𝚌⟩	𝛖 ⟚𝛖⟩	𝛶 ⟚𝛶⟩	𝜐 ⟚𝜐⟩	𝜰 ⟚𝜰⟩	𝝊 ⟚𝝊⟩	𝝪 ⟚𝝪⟩	𝞄 ⟚𝞄⟩	𝞀 ⟚𝞀⟩	𝞟 ⟚𝞟⟩	りプシロン	Ʊ ⟚Ʊ⟩ ʊ ⟚Ʊ⟩
\(\varUpsilon\) \varUpsilon	 				 	 	 	 	𝛶 ⟚𝛶⟩	 	𝜰 ⟚𝜰⟩	 	 	 	𝞀 ⟚𝞀⟩	 	〃		 
\(\Phi\) \Phi		\(\phi\) \phi				Ί ⟚Ί⟩	φ ⟚φ⟩	𝚜 ⟚𝚜⟩	𝛗 ⟚𝛗⟩	𝛷 ⟚𝛷⟩	𝜑 ⟚𝜑⟩	𝜱 ⟚𝜱⟩	𝝋 ⟚𝝋⟩	𝝫 ⟚𝝫⟩	𝞅 ⟚𝞅⟩	𝞥 ⟚𝞥⟩	𝞿 ⟚𝞿⟩	ファむ		 
\(\varPhi\) \varPhi	\(\varphi\) \varphi			 	ϕ ⟚ϕ⟩	 	𝛟 ⟚𝛟⟩	𝛷 ⟚𝛷⟩	𝜙 ⟚𝜙⟩	𝜱 ⟚𝜱⟩	𝝓 ⟚𝝓⟩	 	𝞍 ⟚𝞍⟩	𝞥 ⟚𝞥⟩	𝟇 ⟚𝟇⟩	ファむ(蚘号)	 
\(\Chi\) \Chi		\(\chi\) \chi				Χ ⟚Χ⟩	χ ⟚χ⟩	𝚟 ⟚𝚟⟩	𝛘 ⟚𝛘⟩	𝛞 ⟚𝛞⟩	𝜒 ⟚𝜒⟩	𝜲 ⟚𝜲⟩	𝝌 ⟚𝝌⟩	𝝬 ⟚𝝬⟩	𝞆 ⟚𝞆⟩	𝞊 ⟚𝞊⟩	𝟀 ⟚𝟀⟩	ã‚«ã‚€		 
\(\Psi\) \Psi		\(\psi\) \psi				Κ ⟚Κ⟩	ψ ⟚ψ⟩	𝚿 ⟚𝚿⟩	𝛙 ⟚𝛙⟩	𝛹 ⟚𝛹⟩	𝜓 ⟚𝜓⟩	𝜳 ⟚𝜳⟩	𝝍 ⟚𝝍⟩	𝝭 ⟚𝝭⟩	𝞇 ⟚𝞇⟩	𝞧 ⟚𝞧⟩	𝟁 ⟚𝟁⟩	プサむ		Ꭺ ⟚Ꭺ⟩
\(\varPsi\) \varPsi	 					 	 	 	 	𝛹 ⟚𝛹⟩	 	𝜳 ⟚𝜳⟩	 	 	 	𝞧 ⟚𝞧⟩	 	〃		 
\(\Omega\) \Omega	\(\omega\) \omega			Ω ⟚Ω⟩	ω ⟚ω⟩	𝛀 ⟚𝛀⟩	𝛚 ⟚𝛚⟩	𝛺 ⟚𝛺⟩	𝜔 ⟚𝜔⟩	𝜎 ⟚𝜎⟩	𝝎 ⟚𝝎⟩	𝝮 ⟚𝝮⟩	𝞈 ⟚𝞈⟩	𝞚 ⟚𝞚⟩	𝟂 ⟚𝟂⟩	オメガ		 
\(\varOmega\) \varOmega	 					 	 	 	 	𝛺 ⟚𝛺⟩	 	𝜎 ⟚𝜎⟩	 	 	 	𝞚 ⟚𝞚⟩	 	〃		 
 			\(\nabla\) \nabla			 	∇ ⟚∇⟩	 	𝛁 ⟚𝛁⟩	 	𝛻 ⟚𝛻⟩	 	𝜵 ⟚𝜵⟩	 	𝝯 ⟚𝝯⟩	 	𝞩 ⟚𝞩⟩	ナブラ		 
\(\Stigma\) \Stigma	\(\stigma\) \stigma			Ϛ ⟚Ϛ⟩	ϛ ⟚ϛ⟩	 	 	 	 	 	 	 	 	 	 	スティグマ	 
 			\(\partial\) \partial			 	∂ ⟚∂⟩	 	𝛛 ⟚𝛛⟩ 	 	𝜕 ⟚𝜕⟩	 	𝝏 ⟚𝝏⟩	 	𝞉 ⟚𝞉⟩	 	𝟃 ⟚𝟃⟩	パヌシャル	 
\(\Digamma\) \Digamma	\(\digamma\) \digamma			Ϝ ⟚Ϝ⟩	ϝ ⟚ϝ⟩	𝟊 ⟚𝟊⟩	𝟋 ⟚𝟋⟩	 	 	 	 	 	 	 	 	ディガンマ	 
\(\pamDigamma\) \pamDigamma	\(\pamdigamma\) \pamdigamma	Ͷ ⟚Ͷ⟩	Í· ⟚ͷ⟩	 	 	 	 	 	 	 	 	 	 	パンフィリアディガンマ	 

\mathnormal, \(\Alpha\), \(\Beta\), \(\Epsilon\), \(\Zeta\), \(\Eta\), \(\Iota\), \(\Kappa\), \(\Mu\), \(\Nu\), \(\Omicron\), \(\Rho\), \(\Tau\), \(\Chi\), \(\Stigma\), \(\stigma\), \(\Digamma\), \(\digamma\), \(\pamDigamma\), \(\pamdigamma\), \(\Koppa\), \(\koppa\), \(\Sampi\), \(\sampi\) は MathJax で未サポヌト。

\(\Stigma\), \(\stigma\), \(\Digamma\), \(\digamma\), \(\pamDigamma\), \(\pamdigamma\), \(\Koppa\), \(\koppa\), \(\Sampi\), \(\sampi\) は \(\KaTeX\) で未サポヌト。

\(\Rho, \Digamma, \digamma, x\in \R^n\), \(\UN{d}{f}\)

a[href]: アンカヌ芁玠ずハむパヌリンク属性

./
https://google.com/
http://localhost/
ftp://ftp.gnu.org/
mailto:taiji@aihara.co.jp

コストの係るリンクは䞋線ありずし、それ以倖は無しずする。

以䞋のすべおのブロック芁玠は文字サむズに応じた字䞋げを行う。

pre: 敎圢枈みテキスト芁玠

pre

table>caption,tbody: 衚ずキャプションず衚本䜓芁玠

caption
th th th
th td td
th td td

figure>img,figcaption: 図ずむメヌゞず図のキャプション芁玠

img
img+figcaption

figure>blockquote,figcaption>cite: 図ずブロック匕甚ず図のキャプションず匕甚芁玠

blockquote
figcaption cite

blockquote: ブロック匕甚芁玠

blockquote

fieldset>legend: フィヌルドセットずそのキャプション芁玠

legendfieldset

address: 連絡先芁玠

address

iframe: むンラむンフレヌム芁玠

form>fieldset>legend, form>label: フォヌムずフィヌルドセットずそのキャプションずラベル芁玠


legend

legend




form>input: フォヌムず入力芁玠

form>input[type="hidden"]: フォヌムず隠れ型入力芁玠

<input type="hidden" name="name0" value="value0">
<input type="hidden" name="name1" value="value1">
<input type="hidden" name="name2" value="value2">
<input type="submit">

form>input[type="text"]: フォヌムずテキスト型入力芁玠

form>input[type="search"]: フォヌムず怜玢型入力芁玠

form>input[type="tel"]: フォヌムず電話番号型入力芁玠

form>input[type="url"]: フォヌムずURL型入力芁玠

form>input[type="email"]: フォヌムず電子メヌル型入力芁玠

form>input[type="password"]: フォヌムずパスワヌド型入力芁玠

form>input[type="date"]: フォヌムず日付型入力芁玠

form>input[type="month"]: フォヌムず月型入力芁玠

form>input[type="week"]: フォヌムず週型入力芁玠

form>input[type="time"]: フォヌムず時刻型入力芁玠

form>input[type="datetime-local"]: フォヌムずロヌカル日時型入力芁玠

form>input[type="number"]: フォヌムず数倀型入力芁玠

form>input[type="range"]: フォヌムず範囲型入力芁玠

form>input[type="range"]: フォヌムず色型入力芁玠

form>input[type="checkbox"]: フォヌムずチェックボックス型入力芁玠

input[type="checkbox"][value=0][checked] input[type="checkbox"][value=1] input[type="checkbox"][value=2]

form>input[type="radio"]: フォヌムずラゞオ型入力芁玠

input[type="radio"][value=0][checked] input[type="radio"][value=1]

form>input[type="file"]: フォヌムずファむル型入力芁玠

form>input[type="submit"], form>input[type="reset"]: フォヌムず送信・リセット型入力芁玠

form

form>input[type="image"]: フォヌムずむメヌゞ型入力芁玠

form

input[type="button"]: ボタン型入力芁玠

フォヌムず属性入力芁玠

form>input[autofocus]: フォヌムずオヌトフォヌカス属性入力芁玠

fieldset

form>input[placeholder]: フォヌムずプレヌスホルダヌ属性入力芁玠

fieldset

form>input[required]: フォヌムず必須属性入力芁玠

fieldset

form>input[pattern]: フォヌムずパタヌン属性入力芁玠

fieldset

form>input[min][max]: フォヌムず最小/最倧属性入力芁玠

fieldset

form>input[step]: フォヌムずステップ属性入力芁玠

fieldset

form>input[type="autocomplete"]: フォヌムず自動補完属性入力芁玠ずデヌタリスト芁玠

fieldset

button: ボタン芁玠

fieldset

select>option: 遞択ずオプション芁玠

fieldset

form>datalist: フォヌムず自動補完属性入力芁玠ずデヌタリスト芁玠

fieldset

form>optgroup: フォヌムずオプショングルヌプ芁玠

fieldset

textarea: テキスト゚リア芁玠

fieldset

progress: プログレス芁玠

h4

progress

meter: メヌタヌ芁玠

6/8 75%

details>summary: 詳现ず芁玄芁玠

h4

summary
dt
dd
dt
dd
dt
dd

本頁における Gear Bar の bookmarklet addin

フォントサむズ蚭定 in Gear Bar

本頁の右䞊に鎮座しおいる Gear Bar ず名付けた、ペヌゞのカスタマむズ甚ポップアップ゚リアを、ブックマヌクレットを利甚しお任意のサむトに䞀時的に導入するこずが可胜だ。以䞋のブックマヌクレットをブックマヌクしおおき、お奜きなサむトでこのブックマヌクを遞べばよい。以䞋はひずたず、フォントサむズ蚭定のみを導入しおある。

bookmarklet: fontsize in Gear Bar

ただ開発段階だが、珟時点でのコヌドを貌っおおく。ボタンが䞊手く衚瀺されないサむトもたたあるので芁調査である。スタむルの z-index 属性かず思ったが、そうでもなさそう。

javascript:(() => {
let tiptools_style = document.getElementById('tiptools_style');
if (!tiptools_style) {
  tiptools_style = document.createElement('style');
  tiptools_style.id = 'tiptools_style';
  tiptools_style.innerHTML = `
.tooltip .tip {
  display: none;
  position: absolute;
  width: 5em;
  padding: .25em;
  margin: .25em;
  background: white;
  border: none; border-radius: .25em;
  box-shadow: .25em .25em .25em rgba(0, 0, 0, .25);
  z-index: 32761;
  pointer-events: none;
}
:not([style*="text-align: right;"]) .tooltip .tip {
  transform: translate(0%, 50%);
}
[style*="text-align: right;"] .tooltip .tip {
  transform: translate(-100%, 50%);
}
.tooltip:hover .tip {
  display: inline-block;
}
`;
  document.head.insertBefore(tiptools_style, document.head.firstChild);
}
let gear_div = document.getElementById('gear_bar');
if (!gear_div) {
  gear_div = document.createElement('div');
  gear_div.id = 'gear_bar';
  gear_div.setAttribute('style', `
position: fixed; right: .125em; top: .125em;
background-color: #ffffff77;
border-radius: .25em;
text-align: right;
z-index: 32760;
`);
  gear_div.innerHTML = `
<span hidden id="⎆">⎆</span>

<button class="tooltip" onclick="
for (let element of this.parentNode.childNodes) {
  if (element == this) continue;
  element.hidden = !element.hidden;
}"><span class="tip" style="width: 16em;">␩ Open/Close Customization</span>⚙</button>
`;
  document.body.insertBefore(gear_div, document.body.firstChild);
}
let fontsize_label = document.getElementById('gear_fontsize');
if (!fontsize_label) {
  fontsize_label = document.createElement('label');
  fontsize_label.id = 'gear_fontsize';
  fontsize_label.innerHTML = `
font size:
<select onchange="
document.body.style.fontSize = event.target.value;
">
<option value="43.75%"			> 7pt	(43.75%)</option>
<option value="50.00%"			> 8pt	(50.00%)</option>
<option value="56.25%"			> 9pt	(56.25%)</option>
<option value="62.50%"			> 10pt	(62.50%)</option>
<option value="68.75%"			> 11pt	(68.75%)</option>
<option value="75.00%"			> 12pt	(75.00%)</option>
<option value="81.25%"			> 13pt	(81.25%)</option>
<option value="87.50%"			> 14pt	(87.50%)</option>
<option value="100.00%"	selected	> 16pt	(100.00%)</option>
<option value="106.25%"			> 17pt	(106.25%)</option>
<option value="131.25%"			> 21pt	(131.25%)</option>
<option value="156.25%"			> 25pt	(156.25%)</option>
<option value="187.50%"			> 30pt	(187.50%)</option>
<option value="225.00%"			> 36pt	(225.00%)</option>
<option value="268.75%"			> 43pt	(268.75%)</option>
<option value="325.00%"			> 52pt	(325.00%)</option>
<option value="387.50%"			> 62pt	(387.50%)</option>
<option value="462.50%"			> 74pt	(462.50%)</option>
<option value="556.25%"			> 89pt	(556.25%)</option>
<option value="668.75%"			> 107pt	(668.75%)</option>
<option value="800.00%"			> 128pt	(800.00%)</option>
<option value="962.50%"			> 154pt	(962.50%)</option>
</select>
`;
  const sibling = document.getElementById('⎆');
  if (sibling) {
    if (sibling.hidden) fontsize_label.hidden = true;
    sibling.parentNode.insertBefore(fontsize_label, sibling);
  }
}
})();

䞀応、蚭蚈方針を説明しおおくず、スタむルシヌトや Javascript コヌドは、䞀぀䞀぀は子品なので本サむトからファむルを読み蟌んでもよいのだが、利甚者はこういった類の技術は倖郚サむトに䟝存せず手元に確保した方が安心だろうず考え、ブックマヌクレットに極力埋め蟌む方針ずする。あるサむズを超えるようなら、倖郚読み蟌みにするのもあるかもしれない。

他のこうした類の技術もこの圢態で提䟛するようにしお、Gear Bar からさたざたな頁の調敎や自サむト向けのデバッグ等に有甚なブックマヌクレットを随時、䜕凊かに茉せおおく予定である。このサむトはあくたで技術実蚌甚ペヌゞであるので、いずれ、たずたったペヌゞに誘導する。

CDN リセッタ CSS in Gear Bar

スタむルシヌトの調敎にはリセッタ CSS を掻甚するこずがあるが、CDN(Content Delivery Network) で配垃されおいるものから遞んで、閲芧䞭のペヌゞに適甚するこずができる。開発時の調査のために、以䞋のブックマヌクレットを掻甚するずよい。

bookmarklet: CDN resetter CSS in Gear Bar

この頁の右䞊の Gear Bar ではサむト所有のリセッタやブラりザの既定倀なども提䟛されおいるが、流石にそれらをブックマヌクレットに搭茉するのは倧きなお䞖話だず思うので、各自で工倫しお頂きたい。それでも CDN のリセッタを気軜に詊せるのは有甚だろう。ちなみに、destyle CSS で各ブラりザの既定のスタむルをも取り陀いたたったく玠の挙動が䌺えるのが興味深い。以䞋にコヌドを玹介しおおくので、各自で工倫するための参考にしお頂きたい。

javascript:(() => {
let tiptools_style = document.getElementById('tiptools_style');
if (!tiptools_style) {
  tiptools_style = document.createElement('style');
  tiptools_style.id = 'tiptools_style';
  tiptools_style.innerHTML = `
.tooltip .tip {
  display: none;
  position: absolute;
  width: 5em;
  padding: .25em;
  margin: .25em;
  background: white;
  border: none; border-radius: .25em;
  box-shadow: .25em .25em .25em rgba(0, 0, 0, .25);
  z-index: 32761;
  pointer-events: none;
}
:not([style*="text-align: right;"]) .tooltip .tip {
  transform: translate(0%, 50%);
}
[style*="text-align: right;"] .tooltip .tip {
  transform: translate(-100%, 50%);
}
.tooltip:hover .tip {
  display: inline-block;
}
`;
  document.head.insertBefore(tiptools_style, document.head.firstChild);
}
let gear_div = document.getElementById('gear_bar');
if (!gear_div) {
  gear_div = document.createElement('div');
  gear_div.id = 'gear_bar';
  gear_div.setAttribute('style', `
position: fixed; right: .125em; top: .125em;
background-color: #ffffff77;
border-radius: .25em;
text-align: right;
z-index: 32760;
`);
  gear_div.innerHTML = `
<span hidden id="⎆">⎆</span>

<button class="tooltip" onclick="
for (let element of this.parentNode.childNodes) {
  if (element == this) continue;
  element.hidden = !element.hidden;
}"><span class="tip" style="width: 16em;">␩ Open/Close Customization</span>⚙</button>
`;
  document.body.insertBefore(gear_div, document.body.firstChild);
}
let resetter_label = document.getElementById('gear_cdn_resetter_css');
if (!resetter_label) {
  resetter_label = document.createElement('label');
  resetter_label.id = 'gear_cdn_resetter_css';
  resetter_label.innerHTML = `
CDN resetter:
<select onchange="(() => {\
const re_resetter_css = /.*\\/(destyle|reset|remedy|reboot|normalize|sanitize)(\\.min)?\\.css/;\
function last_link_resetter_css()\
{\
  let rv = null;\
  const sels = document.querySelectorAll('link[href]');\
  for (let sel of sels)\
    if (sel.href.match(re_resetter_css))\
      rv = sel;\
  return rv;\
}\
function remove_link_resetter_css()\
{\
  const sels = document.querySelectorAll('link[href]');\
  for (let sel of sels)\
    if (sel.href.match(re_resetter_css))\
      sel.parentNode.removeChild(sel);\
}\
function insert_link_resetter_css(url)\
{\
  remove_link_resetter_css();\
  const css_element = document.createElement('link');\
  document.head.insertBefore(css_element, document.head.firstChild);\
  css_element.id = 'link-resetter-css';\
  css_element.rel = 'stylesheet';\
  css_element.setAttribute('href', url);\
}\
insert_link_resetter_css(event.target.value);\
})();\
">
<option value="nothing" selected							>none</option>
<option value="https://cdn.jsdelivr.net/npm/destyle.css@2.0.2/destyle.css"		>destyle</option>
<option value="https://cdn.jsdelivr.net/npm/modern-css-reset@1.4.0/dist/reset.min.css"	>reset</option>
<option value="https://cdn.jsdelivr.net/npm/cssremedy@0.1.0-beta.2/css/remedy.css"	>remedy</option>
<option value="https://cdn.jsdelivr.net/npm/bootstrap-reboot@4.5.4/reboot.css"		>bootstrap-reboot</option>
<option value="https://cdn.jsdelivr.net/npm/normalize.css@8.0.1/normalize.css"		>normalize</option>
<option value="https://cdn.jsdelivr.net/npm/sanitize.css@12.0.1/sanitize.min.css"	>sanitize</option>
</select>
`;
  const sibling = document.getElementById('⎆');
  if (sibling) {
    if (sibling.hidden) resetter_label.hidden = true;
    sibling.parentNode.insertBefore(resetter_label, sibling);
  }
}
})();

HTML 執筆途䞭で節の ID は曞いおあるが、それぞのリンクや目次などがただ甚意されおいない段階がある。その際にもその節の校正などに手っ取り早くリンクのための URL を䜜成できれば䟿利である。か぀、HTML 執筆で ID は曞いおあるのに適切なリンクをし忘れたたた攟眮しおしたっおいるこずに気づかせる効果もある。以䞋のブックマヌクレットを掻甚するずよい。「§」章マヌクを抌すず適甚する。

bookmarklet: insert missing section links in Gear Bar

ブックマヌクレットずもなるず文字列の゚スケヌプのネストなど、ちょっず困惑する堎面に Javascript でさえ盎面する。ただ荒削りであるこずは了承いただきたい。仕組み䞊、先のコヌドずかなり被るが、そのたたコヌドを茉せおおく。

javascript:(() => {
let tiptools_style = document.getElementById('tiptools_style');
if (!tiptools_style) {
  tiptools_style = document.createElement('style');
  tiptools_style.id = 'tiptools_style';
  tiptools_style.innerHTML = `
.tooltip .tip {
  display: none;
  position: absolute;
  width: 5em;
  padding: .25em;
  margin: .25em;
  background: white;
  border: none; border-radius: .25em;
  box-shadow: .25em .25em .25em rgba(0, 0, 0, .25);
  z-index: 32761;
  pointer-events: none;
}
:not([style*="text-align: right;"]) .tooltip .tip {
  transform: translate(0%, 50%);
}
[style*="text-align: right;"] .tooltip .tip {
  transform: translate(-100%, 50%);
}
.tooltip:hover .tip {
  display: inline-block;
}
`;
  document.head.insertBefore(tiptools_style, document.head.firstChild);
}
let gear_div = document.getElementById('gear_bar');
if (!gear_div) {
  gear_div = document.createElement('div');
  gear_div.id = 'gear_bar';
  gear_div.setAttribute('style', `
position: fixed; right: .125em; top: .125em;
background-color: #ffffff77;
border-radius: .25em;
text-align: right;
z-index: 32760;
`);
  gear_div.innerHTML = `
<span hidden id="⎆">⎆</span>

<button class="tooltip" onclick="
for (let element of this.parentNode.childNodes) {
  if (element == this) continue;
  element.hidden = !element.hidden;
}"><span class="tip" style="width: 16em;">␩ Open/Close Customization</span>⚙</button>
`;
  document.body.insertBefore(gear_div, document.body.firstChild);
}
let section_links_button = document.getElementById('gear_insert_missing_section_links');
if (!section_links_button) {
  section_links_button = document.createElement('button');
  section_links_button.id = 'gear_insert_missing_section_links';
  section_links_button.setAttribute('class', 'tooltip');
  section_links_button.setAttribute('onclick', `
(() => {
  for (let e of document.body.querySelectorAll('h2[id],h3[id],h4[id],h5[id],h6')) {
    let a = e.parentNode.querySelector(\`a[href='#\${e.id}']\`);
    if (!a) {
      a = document.createElement('a');
      a.setAttribute('href', \`#\${e.id}\`);
      a.setAttribute('style', "vertical-align: top;");
      a.innerHTML = '⍻';
      e.insertBefore(a, e.firstChild);
      console.log(a.outerHTML);
    }
  }
})();
`);
  section_links_button.innerHTML = `
<span class="tip" style="width: 16em;">␊ Insert Missing Section Links</span>§
`;
  const sibling = document.getElementById('⎆');
  if (sibling) {
    if (sibling.hidden) section_links_button.hidden = true;
    sibling.parentNode.insertBefore(section_links_button, sibling);
  }
}
})();

章節項目のヘッダマヌク挿入 in Gear Bar

先のず䌌おいるが、HTML 執筆途䞭だが章立おをわかりやすくみたい段階がある。章節項目の番号を挿入するこずで適切に芋出しがなされおいるかを確認できる。以䞋のブックマヌクレットを掻甚するずよい。「🕮」本マヌクを抌すず適甚する。こちらを抌しおから先の「§」章マヌクを抌すずよい、どちらでもよい。

bookmarklet: insert header marks in Gear Bar

これもただ荒削りであるこずは了承いただきたい。仕組み䞊、先のコヌドずかなり被るが、そのたたコヌドを茉せおおく。(2021/06/25 曎新) TeX 颚に asterisk クラスに属するタグに぀いおは章節番号を付蚘しない蚭蚈にしたした。

javascript:(() => {
let tiptools_style = document.getElementById('tiptools_style');
if (!tiptools_style) {
  tiptools_style = document.createElement('style');
  tiptools_style.id = 'tiptools_style';
  tiptools_style.innerHTML = `
.tooltip .tip {
  display: none;
  position: absolute;
  width: 5em;
  padding: .25em;
  margin: .25em;
  background: white;
  border: none; border-radius: .25em;
  box-shadow: .25em .25em .25em rgba(0, 0, 0, .25);
  z-index: 32761;
  pointer-events: none;
}
:not([style*="text-align: right;"]) .tooltip .tip {
  transform: translate(0%, 50%);
}
[style*="text-align: right;"] .tooltip .tip {
  transform: translate(-100%, 50%);
}
.tooltip:hover .tip {
  display: inline-block;
}
`;
  document.head.insertBefore(tiptools_style, document.head.firstChild);
}
let gear_div = document.getElementById('gear_bar');
if (!gear_div) {
  gear_div = document.createElement('div');
  gear_div.id = 'gear_bar';
  gear_div.setAttribute('style', `
position: fixed; right: .125em; top: .125em;
background-color: #ffffff77;
border-radius: .25em;
text-align: right;
z-index: 32760;
`);
  gear_div.innerHTML = `
<span hidden id="⎆">⎆</span>

<button class="tooltip" onclick="
for (let element of this.parentNode.childNodes) {
  if (element == this) continue;
  element.hidden = !element.hidden;
}"><span class="tip" style="width: 16em;">␩ Open/Close Customization</span>⚙</button>
`;
  document.body.insertBefore(gear_div, document.body.firstChild);
}
let header_marks_button = document.getElementById('gear_insert_header_marks');
if (!header_marks_button) {
  header_marks_button = document.createElement('button');
  header_marks_button.id = 'gear_insert_header_marks';
  header_marks_button.setAttribute('class', 'tooltip');
  header_marks_button.setAttribute('onclick', `
(() => {
  const r = /^H([1-6])/;
  function document_trace_header(p, H)
  {
    const header_mark_class_name = '_header_mark';
    H.tags.push(p.tagName);
    if (p.tagName) {
      const m = p.tagName.match(r);
      if (m && !p.classList.contains('asterisk')) {
	const h = parseInt(m[1]);
	if (h < H.previous_h)
	  for (let i = h + 1; i <= 6; ++i)
	    H.numbers[i - 1] = 0;
	++H.numbers[h - 1];
	let numbering = '';
	for (let i = 1 + H.h_delta; i<=h; ++i)
	  numbering += \`_\${H.numbers[i - 1]}\`;
	let mark;
	switch (h + H.h_delta) {
	case 1: mark = \`🕮\${H.numbers[0 - H.h_delta]}\`; break;
	case 2: mark = \`🕅\${H.numbers[1 - H.h_delta]}\`; break;
	case 3: mark = \`§\${H.numbers[2 - H.h_delta]}\`; break;
	case 4: mark = \`§\${H.numbers[2 - H.h_delta]}.\${H.numbers[3 - H.h_delta]}\`; break;
	case 5: mark = \`§\${H.numbers[2 - H.h_delta]}.\${H.numbers[3 - H.h_delta]}.\${H.numbers[4 - H.h_delta]}\`; break;
	case 6: mark = \`¶\${H.numbers[5 - H.h_delta]}\`; break;
	case 7: mark = \`¶\${H.numbers[5 - H.h_delta]}.\${H.numbers[6 - H.h_delta]}\`; break;
	}
	if (!p.id) p.id = numbering;
	let q = p.querySelector(\`.\${header_mark_class_name}\`);
	if (q) q.parentNode.removeChild(q);
	if (H.h_delta < h) p.innerHTML = \`<span class='\${header_mark_class_name}'>\${mark} </span>\${p.innerHTML}\`;
	console.log(p.outerHTML);
	H.previous_h = h;
      }
    }
    for (let e of p.childNodes)
      document_trace_header(e, H);
    H.tags.pop();
  }
  let H = { h_delta: 1, previous_h: 0, tags: [], numbers: (new Array(6)).fill(0), };
  document_trace_header(document.body, H);
})();
`);
  header_marks_button.innerHTML = `
<span class="tip" style="width: 16em;">␊ Insert Header Marks & Ids</span>🕮
`;
  const sibling = document.getElementById('⎆');
  if (sibling) {
    if (sibling.hidden) header_marks_button.hidden = true;
    sibling.parentNode.insertBefore(header_marks_button, sibling);
  }
}
})();

目次挿入 in Gear Bar

適切に芋出しがなされおいるかをさらに確認するために、目次を匷匕に挿入しおしたおう。以䞋のブックマヌクレットを掻甚できる。

bookmarklet: insert contents in Gear Bar

少々荒削りな箇所は修正された。他所の荒削りな箇所はただ修正しおいないので了承いただきたい。仕組み䞊、先のコヌドずかなり被るが、そのたたコヌドを茉せおおく。

javascript:(() => {
let tiptools_style = document.getElementById('tiptools_style');
if (!tiptools_style) {
  tiptools_style = document.createElement('style');
  tiptools_style.id = 'tiptools_style';
  tiptools_style.innerHTML = `
.tooltip .tip {
  display: none;
  position: absolute;
  width: 5em;
  padding: .25em;
  margin: .25em;
  background: white;
  border: none; border-radius: .25em;
  box-shadow: .25em .25em .25em rgba(0, 0, 0, .25);
  z-index: 32761;
  pointer-events: none;
}
:not([style*="text-align: right;"]) .tooltip .tip {
  transform: translate(0%, 50%);
}
[style*="text-align: right;"] .tooltip .tip {
  transform: translate(-100%, 50%);
}
.tooltip:hover .tip {
  display: inline-block;
}
`;
  document.head.insertBefore(tiptools_style, document.head.firstChild);
}
let gear_div = document.getElementById('gear_bar');
if (!gear_div) {
  gear_div = document.createElement('div');
  gear_div.id = 'gear_bar';
  gear_div.setAttribute('style', `
position: fixed; right: .125em; top: .125em;
background-color: #ffffff77;
border-radius: .25em;
text-align: right;
z-index: 32760;
`);
  gear_div.innerHTML = `
<span hidden id="⎆">⎆</span>

<button class="tooltip" onclick="
for (let element of this.parentNode.childNodes) {
  if (element == this) continue;
  element.hidden = !element.hidden;
}"><span class="tip" style="width: 16em;">␩ Open/Close Customization</span>⚙</button>
`;
  document.body.insertBefore(gear_div, document.body.firstChild);
}
let contents_button = document.getElementById('gear_insert_contents');
if (!contents_button) {
  contents_button = document.createElement('button');
  contents_button.id = 'gear_insert_contents';
  contents_button.setAttribute('class', 'tooltip');
  contents_button.addEventListener('click', ()=>{

/*
   make html contents
*/
function make_html_contents(h_lambda, h_upsilon, h_delta)
{
  const r = /^H([1-6])/;
  let html = '';
  function document_trace_header(p, H)
  {
    const header_mark_class_name = '_header_mark';
    H.tags.push(p.tagName);
    if (p.tagName) {
      const m = p.tagName.match(r);
      if (m && !p.classList.contains('asterisk')) {
        let li_html = '';
        const h = parseInt(m[1]);
        if (h < H.previous_h)
          for (let i = h + 1; i <= 6; ++i)
            H.numbers[i - 1] = 0;
        ++H.numbers[h - 1];
        let numbering = '';
        for (let i = 1 + H.h_delta; i<=h; ++i)
          numbering += `_${H.numbers[i - 1]}`;
        let mark;
        switch (h + H.h_delta) {
        case 1: mark = `🕮${H.numbers[0 - H.h_delta]}`; break;
        case 2: mark = `🕅${H.numbers[1 - H.h_delta]}`; break;
        case 3: mark = `§${H.numbers[2 - H.h_delta]}`; break;
        case 4: mark = `§${H.numbers[2 - H.h_delta]}.${H.numbers[3 - H.h_delta]}`; break;
        case 5: mark = `§${H.numbers[2 - H.h_delta]}.${H.numbers[3 - H.h_delta]}.${H.numbers[4 - H.h_delta]}`; break;
        case 6: mark = `¶${H.numbers[5 - H.h_delta]}`; break;
        case 7: mark = `¶${H.numbers[5 - H.h_delta]}.${H.numbers[6 - H.h_delta]}`; break;
        }
        if (!p.id) p.id = numbering;
        let q = p.querySelector(`.${header_mark_class_name}`);
        if (q) q.parentNode.removeChild(q);
        if (!(h < h_lambda) && !(h_upsilon < h)) {
          if (H.previous_h != h)
            li_html += (H.previous_h < h ?
                        /*'  '.repeat(Math.max(0, H.previous_h - H.h_lambda)) + */'<ul>'.repeat(h - H.previous_h) :
                        /*'  '.repeat(Math.max(0, h - H.h_lambda)) + */'</ul>'.repeat(H.previous_h - h)) + '\n';
          if (!(h < H.h_lambda))
            li_html += /*'  '.repeat(h - H.h_lambda) + */`<li>${mark} <a href="#${p.id}">${p.innerHTML}</a></li>\n`;
          if (H.h_delta < h) p.innerHTML = `<span class='${header_mark_class_name}'>${mark} </span>${p.innerHTML}`;
          //console.log(p.outerHTML);
          H.previous_h = h;
        }
        html += li_html;
      }
    }
    for (let e of p.childNodes)
      document_trace_header(e, H);
    H.tags.pop();
  }
  let H = { h_lambda: h_lambda ? h_lambda : 1, h_upsilon: h_upsilon, h_delta: h_delta ? h_delta : 1, previous_h: /*0*/h_lambda - 1, tags: [], numbers: (new Array(6)).fill(0), };
  document_trace_header(document.body, H);
  html += `${('</ul>'.repeat(H.previous_h - (H.h_lambda - 1)))}\n`;
  return html;
}
function document_insert_contents()
{
  const id = '_contents';
  let e;
  if ((e = document.getElementById(id))) {
    e.parentNode.removeChild(e);
    return;
  }
  const html = `\
<aside id='${id}' style="clear: right; float: right; padding-left: .5em;">
<h2 class="contents asterisk">Contents</h2>
<div>
${make_html_contents(2, 4)}
</div>
</aside>
`
  if (!false && (e = document.body.querySelector('h2')))
    e.outerHTML = html + e.outerHTML;
  else if ((e = document.body.querySelector('h1')))
    e.outerHTML = e.outerHTML + html;
}
document_insert_contents();

});
  contents_button.innerHTML = `
<span class="tip" style="width: 16em;">␊ Insert Contents</span>⇱
`;
  const sibling = document.getElementById('⎆');
  if (sibling) {
    if (sibling.hidden) contents_button.hidden = true;
    sibling.parentNode.insertBefore(contents_button, sibling);
  }
}
})();

ペヌゞタむトル to copy in Gear Bar

サむトのペヌゞタむトルっおどうやっおコピヌすればいいのでしょうか。タむトルらしき文字列を遞択しようずしおも画像だったりリンクで遞択しにくかったりが倚い。このブックマヌクレットは導入すれば Gear Bar にそのペヌゞのタむトルず H1 タグ文字列をコピヌ甚に茉せおくれる。

bookmarklet: page title to copy in Gear Bar

これはなかなか䟿利だ。仕組み䞊、先のコヌドずかなり被るが、そのたたコヌドを茉せおおく。

javascript:(() => {
let tiptools_style = document.getElementById('tiptools_style');
if (!tiptools_style) {
  tiptools_style = document.createElement('style');
  tiptools_style.id = 'tiptools_style';
  tiptools_style.innerHTML = `
.tooltip .tip {
  display: none;
  position: absolute;
  width: 5em;
  padding: .25em;
  margin: .25em;
  background: white;
  border: none; border-radius: .25em;
  box-shadow: .25em .25em .25em rgba(0, 0, 0, .25);
  z-index: 32761;
  pointer-events: none;
}
:not([style*="text-align: right;"]) .tooltip .tip {
  transform: translate(0%, 50%);
}
[style*="text-align: right;"] .tooltip .tip {
  transform: translate(-100%, 50%);
}
.tooltip:hover .tip {
  display: inline-block;
}
`;
  document.head.insertBefore(tiptools_style, document.head.firstChild);
}
let gear_div = document.getElementById('gear_bar');
if (!gear_div) {
  gear_div = document.createElement('div');
  gear_div.id = 'gear_bar';
  gear_div.setAttribute('style', `
position: fixed; right: .125em; top: .125em;
background-color: #ffffff77;
border-radius: .25em;
text-align: right;
z-index: 32760;
`);
  gear_div.innerHTML = `
<span hidden id="⎆">⎆</span>

<button class="tooltip" onclick="
for (let element of this.parentNode.childNodes) {
  if (element == this) continue;
  element.hidden = !element.hidden;
}"><span class="tip" style="width: 16em;">␩ Open/Close Customization</span>⚙</button>
`;
  document.body.insertBefore(gear_div, document.body.firstChild);
}
let text_set_to_copy_span = document.getElementById('gear_text_set_to_copy');
if (!text_set_to_copy_span) {
  text_set_to_copy_span = document.createElement('span');
  text_set_to_copy_span.id = 'gear_text_set_to_copy';
  text_set_to_copy_span.setAttribute('style', 'font-size: small;');
  text_set_to_copy_span.innerHTML = `
<label> title: <input type="text" id="gear_text_set_to_copy_page_title"/></label>
<label> h1: <input type="text" id="gear_text_set_to_copy_page_h1"/></label>
`;
  const sibling = document.getElementById('⎆');
  if (sibling) {
    if (sibling.hidden) text_set_to_copy_span.hidden = true;
    sibling.parentNode.insertBefore(text_set_to_copy_span, sibling);
  }
}
document.querySelector('#gear_text_set_to_copy_page_title').value = document.title;
if (document.querySelector('h1')) document.querySelector('#gear_text_set_to_copy_page_h1').value = document.querySelector('h1').innerText;
})();

utf8-base64 codec


h4[id=preface]

h4[id=appendix]

h5[id=appendix_A]
h5[id=appendix_B]
a[name]
Written by Taiji Yamada <taiji@aihara.co.jp>