日本式相似記号
は,標準的なLaTeXの命令で出力することが難しく,日本の中高教育業界では悩みの種となっています。
TeXだと∽が出ないんですよね…(第3問(3))。 https://t.co/s4l4tDbDha
— 大澤裕一 (@HirokazuOHSAWA) 2026年2月25日
この記事では,日本式相似記号を出力するための過去の様々な方法を紹介し,また,TikZを用いた新たな解決策も紹介します。
背景
相似記号は,欧米では ∼ ($\sim$) を使うのが標準的です。
【入力】
\[ \triangle\mathrm{ABC} \sim \triangle\mathrm{PQR} \]
【出力】

一方,日本の中学・高校数学では,∼ とは逆向きに波打った,∽ という記号が使われることが標準的です。LaTeX では,そちら向きの相似記号を出力するための,\backsim という命令が,amssymb パッケージに用意されています。
【入力】
\documentclass{article} \usepackage{amssymb} \begin{document} \[\triangle\mathrm{ABC}\backsim\triangle\mathrm{PQR}\] \end{document}
【出力】

しかし,この字形は,単に ~ (tilde) の波打ち方を逆にしたもの (reversed tilde) であって,日本の中高教科書に記載されている「横倒しのS」のような
という字形 (lazy S) *1にはなりません。
Unicodeでは,U+223D REVERSED TILDE として,「~ の波打ち方を逆にしたもの」(reversed tilde) と「Sを横倒しにしたもの」(lazy S) が同じ文字として包摂されています。
つまり:
— 某ZR(ざんねん🙃) (@zr_tex8r) 2026年2月25日
Unicodeでは「“∼”の上下反転」と「“∾”の上下反転」が同じ文字扱い(U+223D)されている😲#Unicode
※“lazy S”が何なのかはU+223Eを見ればわかる。 pic.twitter.com/FUJaCufk95
inverted lazy S (∾) に対しては U+223E という独立したUnicode位置が与えられているのに,inverted でない lazy S に対しては reversed tilde と包摂されてしまっているとは,困ったものです。
※なお,U+223D に対する 異体字セレクタ (Standardized Variation Sequence, SVS) で,両字形を区別する仕組みが導入される予定とのことです。
アアアッ、
— 某ZR(ざんねん🙃) (@zr_tex8r) 2026年2月26日
「U+223D(\backsim)の『“∾”の上下反転』字形を指示するStandardized Variation Sequence」
の登録が予定されているぞ!😃#Unicode pic.twitter.com/esgFwXn3k1
これまで考えられてきた対策
この問題に対しては,先人達が様々な解決策を考えてきました。
MathJax の出力において ∽ を出力する工夫
emath での解決策
emath では,和文フォントに含まれる全角文字の相似記号を,位置や空白を微調整した上で出力する方針で実装されています。
\DeclareRobustCommand\souzi{\@ifnextchar[{\@souzi}{\@souzi[\empty]}}% \def\@souzi[#1]{% (中略) \mathrel{\hbox{\chgfontsizeratio{\sz@s}\raisebox{-\sz@r ex}{∽}}}% }%
この方法の場合,使用している和文フォントの種類によって,相似記号のグリフ形状が変化してしまうというのが難点です。
ceo.sty での解決策
ceo.sty では,専用の Type1 Font を用意することで,相似記号\soji,および inverted lazy S の字形の逆相似記号 \gyakusoji が定義されています。

(ceo.sty のマニュアルより)
ceo.sty はインストールはやや難しいというのが難点ですが,Cloud LaTeX ならば,ceo.sty がデフォルトで利用できるようになっています。
\qbezier を使った描画による解決策
こちらのページからリンクされている次のコードでは,picture 環境で用いられる*2ベジェ曲線描画命令 \qbezier を用いて,相似記号を描画しています。
また,このコードでは,ボールド数式環境下において相似記号もボールドになるよう配慮されています。
ただし,この方法で描画される相似記号は,LaTeXのデフォルト状態では,拡大するとあまり美しくないという難点があります。
LaTeXのデフォルト状態
【入力】
\documentclass{jlreq} \usepackage{amsmath} \pagestyle{empty} \makeatletter \def\proportionalto{% \mathrel{\mathchoice {\@proportionalto\tf@size}{\@proportionalto\tf@size}% {\@proportionalto\sf@size}{\@proportionalto\ssf@size}}} \def\@proportionalto#1{% \vcenter{\hbox{% \dimen@#1\p@\unitlength.1\dimen@ \@proportionalto@check@boldness \qbezier(3.4,2.7)(2.5,3.375)(1.6,2.7)% \qbezier(1.6,2.7)(.7,1.5)(1.6,.3)% \qbezier(1.6,.3)(2.5,-.375)(3.4,.3)% \qbezier(3.4,.3)(5,1.5)(6.6,2.7)% \qbezier(6.6,2.7)(7.5,3.375)(8.4,2.7)% \qbezier(8.4,2.7)(9.3,1.5)(8.4,.3)% \qbezier(8.4,.3)(7.5,-.375)(6.6,.3)% \vrule\@width\dimen@\@height\z@\@depth\z@}}} \def\@proportionalto@check@boldness{% \def\@varpropto@temp{bold}% \ifx\math@version\@varpropto@temp\thicklines\else\thinlines\fi} \makeatother \begin{document} \begin{align*} &A \proportionalto B\\ &\boldsymbol{A \proportionalto B} \end{align*} \end{document}
【出力】

pict2e または BXeepic パッケージを導入した場合
pict2e または BXeepic パッケージ を用いると,DVIware固有の描画機能が使えるようになり,綺麗な曲線が描かれるようになります。しかし,拡大してよく観察してみると,線のつなぎ目が見えてしまう点が不満点となります。
【入力】
\documentclass{jlreq} \usepackage[dvipdfmx]{bxeepic} % LuaLaTeXの場合は [dvipdfmx] のドライバ指定は不要 \usepackage{amsmath} (以下前掲のコードと同じ)
【出力】


unicode-math で特定のフォントの U+223D を出力する方法
LuaLaTeX のように,unicode-math が使える環境の場合は,自分のお気に入りのフォントを指定して,U+223D (∽) のグリフが出力できます。
Apple Gothic のグリフを呼び出す方法
たとえば,次のコードの場合,macOS環境下にインストールされた Apple Gothic のグリフを呼び出すことで相似記号を出力しています。 (ただし,このコードの場合,Apple Gothic がインストールされているmacOS環境下でしかコンパイルが通りませんので,ソースコードの可搬性・再現性としては下がってしまいます。)
【入力】
LuaLaTeXならこんな感じでいいかな
— Haruhiko Okumura (@h_okumura) 2026年2月25日
\documentclass{jlreq}
\usepackage{unicode-math}
\begin{document}
\[ A \mathrel{\text{\fontspec{AppleGothic} ∽}} B \]
\end{document} pic.twitter.com/wPgmb7uZCZ
【出力】

IPAフォントのグリフを呼び出す方法
次のコードでは,\backsim の定義を IPA P明朝体 の U+223D (∽) に差し替えています。TeX Live には標準でIPAexフォント群が同梱されているので,TeX Liveがインストールされている環境下ならば同一のコンパイル結果が得られます。
ちなみに:
— 某ZR(ざんねん🙃) (@zr_tex8r) 2026年2月25日
unicode-mathパッケージ使用時に
「\backsim だけ別のフォントにしたい」
という場合は
\setmathfont{‹フォント›}[range=\backsim]
とすればオッケーです😃#TeX #TeXLaTeX
※この場合明示的な「メインの \setmathfont の指定」も必要になる。 pic.twitter.com/3imHMmdUDW
【入力】
%#!lualatex \documentclass{jlreq} \usepackage{unicode-math} \setmathfont{Latin Modern Math} \setmathfont{IPAPMincho}[range=\backsim] \begin{document} $A\backsim B$ \end{document}
【出力】

【追記】unicode-math で特定のフォントの U+223E の出力を反転して埋め込む方法
「テキスト情報が正常でなくてもよい」
— 某ZR(ざんねん🙃) (@zr_tex8r) 2026年3月13日
(TikZ描画だと当然ならない)
のであれば
「U+223E ∾ (\invlazys) を反転させる」
という手もあって、これだと
「他の記号とデザインが揃う」
というメリットがあります。#TeX #TeXLaTeX
※ただし \invlazys 自体がunicode-mathでしかサポートされない。 https://t.co/KZJVEhGkmd
LuaLaTeX のように,unicode-math が使える環境の場合であれば,\invlazys という命令によって U+223E inverted lazy S (∾) を数学記号として出力できます。そこで,その出力を左右反転させることによって,他の数式部分の記号でのデザインの統一性を保ちつつ,日本式相似記号
を出力できます。
【入力】
次のコードにより,unicode-math のデフォルトの LM Math によって,U+223E inverted lazy S (∾) とその左右反転版を,統一的デザインで出力できます。
%#!lualatex \documentclass{jlreq} \usepackage{graphicx,unicode-math} \newcommand\mJaSim{\mathrel{\text{% \reflectbox{$\invlazys$}}}} \begin{document} $A \invlazys B \propto C \mJaSim D$ \end{document}
【出力】

TikZ で描画する解決策の考案
現在の環境ならば,picture 環境に頼ることなく,TikZでよりリッチな描画表現が使えます。TikZが使える環境ならば,LuaLaTeX / (u)pLaTeX + dvipdfmx など,エンジンに依存せず使用可能であり,どの環境でも同一のコンパイル結果が得られる点がメリットです。
「線」として描画する方法
次のコードは,TikZ でベジエ曲線として相似記号を描く \proportionalto という命令を定義します。ボールド数式環境の場合は太い線で出力されるよう考慮してあります。(以下の座標は生成AIに計算させて作りました。)
【入力】
このコードでは,TikZによる相似記号の描画前に,
\node[overlay,text=white,anchor=west] {∽};
によって白いダミーテキストを出力することによって,PDFからテキストをコピーしたときに U+223D (∽) が取り出せるように工夫してあります。(白以外の背景の場所で相似記号を出力するとダミーテキストが見えてしまいますが。)
【出力】

「塗り」として描画する方法
上記の方法の場合は,一定幅の線として描画されます。それに対し,LaTeX標準の \sim や \backsim の場合は,中央部は太く,端の方ほど細く,という筆遣いが見られます。

このような筆遣いをTikZで再現するためには,「線(draw)として」ではなく「塗り(fill)として」描画させる必要があるでしょう。
【入力】
【出力】

複雑な図形の出力となるので,コンパイルが遅くなる点が難点ではありますが,それは必要ならば \setbox で組版済みのボックスを保管しておくようにすれば解決可能です。