\documentclass{ltjsarticle} \usepackage{qworld} \usepackage{bookmark} \usepackage{fontspec} \usepackage{pdfpages} \usepackage{amsmath} \usepackage{amssymb} \usepackage{amsfonts} \usepackage{mathtools} \usepackage{ascmac} \usepackage{fancybox} \usepackage{float} \usepackage{xparse} \usepackage{bbm} \usepackage{mathrsfs} %\numberwithin{equation}{subsection} \usepackage{changelog} \usepackage{framed} \newenvironment{longshadowbox}{% \def\FrameCommand{\fboxsep=\FrameSep \shadowbox}% \MakeFramed {\FrameRestore}}% {\endMakeFramed} \usepackage{url} \usepackage{hyperref} \hypersetup{colorlinks=true, linkcolor=blue} \usepackage{iitem} \usepackage{multirow} \usepackage{here} \usepackage{fontawesome} \usepackage{xspace} \newcommand{\qworldname}{\texttt{QWorld}\xspace} \newcommand{\tikzname}{Ti\emph{k}Z\xspace} \newcommand{\texlivename}{\TeX{} \textsf{Live}\xspace} \setcounter{tocdepth}{3} \usepackage{listings} \lstset{basicstyle=\ttfamily} \usepackage[most]{tcolorbox} \newtcblisting{mybox}[2][]{% colback=red!5!white, colframe=red!75!black, fonttitle=\bfseries, title=#2, #1 } \tcbset { codeinfo/.style= { colframe=cyan!90, coltitle=cyan!60, colbacktitle=black, fonttitle=\small\sffamily\bfseries, fontupper=\small, fontlower=\small }, exampletitleinfo/.style 2 args= { codeinfo, title={例 \thetcbcounter #1}, label={#2} }, failurecodeinfo/.style= { colframe=red!90, coltitle=red!60, colbacktitle=black, fonttitle=\small\sffamily\bfseries, fontupper=\small, fontlower=\small }, failureexampletitleinfo/.style 2 args= { failurecodeinfo, title={失敗例 \thetcbcounter #1}, label={#2} } } \newtcblisting{texexp}[1] { codeinfo, #1 } \newtcblisting[auto counter,number within=section]{codebox}[3][center lower,listing side text,righthand width=3.5cm,bicolor,colbacklower=white] { exampletitleinfo={#2}{#3}, breakable, #1 } \newtcblisting[use counter from=codebox,number within=section]{CODEBOX}[3][center lower,bicolor,colbacklower=white] { exampletitleinfo={#2}{#3}, breakable, #1 } \newtcolorbox[use counter from=codebox]{codeboxspec}[3][] { exampletitleinfo={#2}{#3}, breakable, #1 } \newtcblisting{texfexp}[1] { failurecodeinfo, #1 } \newtcblisting[auto counter,number within=section]{fcodebox}[3][center lower,listing side text,righthand width=3.5cm,bicolor,colbacklower=white] { failureexampletitleinfo={#2}{#3}, breakable, #1 } \newtcblisting[use counter from=fcodebox,number within=section]{FCODEBOX}[3][center lower,bicolor,colbacklower=white] { failureexampletitleinfo={#2}{#3}, breakable, #1 } \newtcolorbox[use counter from=fcodebox]{fcodeboxspec}[3][] { failureexampletitleinfo={#2}{#3}, breakable, #1 } \usepackage{xcolor} \NewDocumentCommand{\showcmd}{O{\textbackslash} m O{black}}{% \leavevmode% \ifthenelse{\equal{#3}{new}}{% \textcolor{green!50!black}{\texttt{#1#2}}% }{% \ifthenelse{\equal{#3}{old}}{% \textcolor{red}{\texttt{#1#2}}% }{% \textcolor{#3}{\texttt{#1#2}}% }% }% } \begin{document} % \title{ % \Huge \textbf{\qworldname}\\[4pt] % \scriptsize\texttt{Version 1.1.1} \\[4pt] % } % \author{ % \textbf{新名 亮太} \\[4pt] % } % \date{\today} % \maketitle \begin{titlepage} \centering \vspace*{2.5cm} % パッケージ名とバージョン {\Huge\bfseries The QWorld\par} \vspace{1ex} % {\large A \LaTeX{} package for diagrammatic reasoning\\ % in monoidal categories and categorical quantum mechanics\par} {\large モノイダル圏および量子力学のためのストリング図式生成\par} \vspace{2ex} {\normalsize\ttfamily v1.1.2\par} \vspace{3cm} % 著者情報 {\large\bfseries 新名亮太\par} \vspace{1ex} \href{qworld-package@googlegroups.com} {\normalsize\ttfamily qworld-package@googlegroups.com} \vfill % 日付 {\today} \end{titlepage} \begin{abstract} \qworldname は, モノイダル圏における図式計算を直感的かつ効率的に描画するために設計された\LaTeX パッケージである. 特に, 圏論的手法が重要な役割を果たす量子論, トポロジカル量子計算, 及び関連分野における図式的推論の可視化を支援する. 本パッケージは\tikzname\cite{tikz-manual} を基盤としており, シンプルなコマンドで複雑な図式を容易に描画できる. \end{abstract} \tableofcontents \section{導入} 本稿では, \qworldname パッケージのインストール方法, 基本的な使用法, 応用例を体系的に解説する. \qworldname は, モノイダル圏に基づく図式言語の組版に特化した\LaTeX パッケージであり, モノイダル圏, フロベニウス構造, 組紐, ホップ代数, シンメトリー, 双対性, ピボタル構造, ダガーなど, 多岐にわたる圏論的概念を図式表現するための直感的なコマンドセットを提供する. \section{基本的な使い方} \subsection{基本要素} \qworldname パッケージのの最も基本的なコマンドを以下に示す. これらは図式を描画するための基礎となる. \begin{itemize} \item \showcmd{q}: 図の素子を配置するためのキャンバス. \item \showcmd{qbox}: ボックス\q[scale=0.5]{\qbox}の描画. \item \showcmd{qwire}: ワイヤー\q[scale=0.5]{\qwire}の描画. \item \showcmd{qcirc}: 合成. \end{itemize} これらのコマンドは, キャンバスである\verb|\q{...}|内に記述する. 例えば\verb|\q{\qbox}|と記述すると, ボックス\q[scale=0.5]{\qbox}が描画される.\par \(\q[scale=0.5]{\qbox}\)と\(\q[scale=0.5]{\qbox}\)を合成するためには, \verb|\qcirc|を使用する. これは数学における合成\(g\circ f\) (\verb|\(g\circ f\)|) と似ている. \begin{codebox}{}{Ex:7812973891217} \q{ \qbox \qcirc \qbox } \end{codebox} また, \verb|\qbox| を並置すると, 描画結果でもボックス\(\q[scale=0.5]{\qbox}\)が横に並ぶ: \begin{codebox}{}{boxs2} \q{ \qbox \qbox \qbox } \end{codebox} \verb|\qcirc| を用いて複数のボックスを合成することも可能である: \begin{codebox}{}{boxsbr} \q { \qbox \qbox \qbox \qcirc \qbox \qbox \qbox } \end{codebox} なお, \verb|\n|は\verb|\qcirc|と同義である: \begin{codebox}{}{boxsn} \q { \qbox \qbox \qbox \n \qbox \qbox \qbox } \end{codebox} \begin{codebox}{}{ex:hopflink} \q{ \qcaprev \qcap \n \qwire \qbraid \qwire \n \qwire \qbraid \qwire \n \qcup \qcuprev } \end{codebox} \verb|\qcaprev|は\q[scale=0.6]{\qcaprev}を, \verb|\qcap|は\q[scale=0.6]{\qcap}を, \verb|\qwire|は\q[scale=0.5]{\qwire}を, \verb|\qbraid|は\q[scale=0.5]{\qbraid}を, \verb|\qcup|は\q[scale=0.6]{\qcup}を, \verb|\qcuprev|は\q[scale=0.6]{\qcuprev}を, 各々描画する. 全体として, コマンドの配置の通りに描画されていることが分かる.\par \subsection{数式モード} 図式言語を含んだ数式を記述する場合は, 数式モードを使用する. \begin{CODEBOX}{}{IntroEx} \[ \operatorname{Tr}\left( \q{ \qbraid\n \qbraid } \right) =\q{ \qcap \qcap \n \qwire \qbraidinv \qwire \n \qwire \qbraidinv \qwire \n \qcuprev \qcuprev } \] \end{CODEBOX} \subsection{インストール} \qworldname パッケージのスタイルファイル\showcmd[]{qworld.sty}は, \href{https://ctan.org/pkg/qworld}{CTAN}上の以下のページから入手可能である: \begin{center} \url{https://ctan.org/pkg/qworld} \end{center} ダウンロードしたファイルを\TeX のパッケージディレクトリに配置し, プリアンブルに以下を記述することで使用可能となる: \begin{verbatim} \usepackage{qworld} \end{verbatim} パッケージが\TeX ディストリビューションに含まれている場合は, \showcmd[]{tlmgr}や\showcmd[]{MiKTeX Console}などを利用してインストールすることもできる. \paragraph{依存関係} 依存パッケージは以下の通りである: \begin{itemize} \item \tikzname \iitem \showcmd[]{cd} \iitem \showcmd[]{positioning} \iitem \showcmd[]{arrows} \iitem \showcmd[]{arrows.meta} \iitem \showcmd[]{calc} \iitem \showcmd[]{intersections} \iitem \showcmd[]{shapes.symbols} \iitem \showcmd[]{shapes.geometric} \iitem \showcmd[]{shapes.misc} \iitem \showcmd[]{decorations.pathreplacing} \iitem \showcmd[]{decorations.markings} \iitem \showcmd[]{decorations.pathmorphing} \item \showcmd[]{pgffor} \item \showcmd[]{ifthen} \item \showcmd[]{xparse} \item \showcmd[]{xfp} \item \showcmd[]{xstring} \end{itemize} これらのパッケージは\texlivename ディストリビューションに標準で含まれており, 特別な手間をかける必要はない. \section{基本的なカスタマイズ} 本節では, \qworldname のコマンドをカスタマイズする方法を解説する. \subsection{識別番号} \verb|\q{...}|内に配置された全てのコマンドには, 実行順に基づいて自動的に固有の識別番号が割り当てられる. 例えば, 先の例 \ref{boxsn} では各\verb|\qbox|に番号が振られる: \[\q{\qloop[2]{\qloop[3]{\qbox[show id={true}]}\n}}\] 詳細は, \pageref{subsec:showid}ページの\ref{subsec:showid}節を参照せよ. \subsection{バウンディングボックス} \[\q{ \qcaprev \qcap \n \qwire \qbraid \qwire \n \qwire \qbraid \qwire \n \qcup \qcuprev \qbb[red][1,2] \bbsymbol{Measure} \bbsymbol[W]{Output}[left] \bbsymbol[NW]{Computation}[above left] \bbsymbol[NE]{Physics}[above right] \qbb[yellow][3,5,6,8] \bbsymbol{Braid} \bbsymbol[W]{Compute}[left] \qbb[cyan][9,10] \bbsymbol{Create} \bbsymbol[W]{Initialize}[left] }\] 各素子には, バウンディングボックスが付随する. 以下に例を示す: \begin{itemize} \item \q{\qcaprev}のバウンディングボックスを可視化すると\q{\qcaprev\qbball}. \item \q{\qbraid}のバウンディングボックスを可視化すると\q{\qbraid\qbball}. \item \q{\qwire}のバウンディングボックスを可視化すると\q{\qwire\qbball}. \item \q{\qcuprev}のバウンディングボックスを可視化すると\q{\qcuprev\qbball}. \end{itemize} バウンディングボックスを可視化するコマンドと, 可視化したバウンディングボックス近辺にテキストを置くコマンドは次の通りである: \begin{itemize} \item 可視化 \iitem \showcmd{qbb}: 特定の素子のバウンディングボックスを表示. \iitem \showcmd{qbball}: 全ての素子のバウンディングボックスを一度に表示. \iitem \showcmd{qBBall}: キャンバス全体を囲むバウンディングボックスをを表示. \item テキストを置く \iitem \showcmd{bbsymbol}: バウンディングボックスにテキストを配置. \end{itemize} \begin{verbatim} \qbb[<色>][] \end{verbatim} \begin{itemize} \item 第一引数 (オプション): 色を指定. 未指定の場合は無色. \item 第二引数: 対象となる素子の識別番号のリストを指定し, それらを含むバウンディングボックスを表示. \end{itemize} \begin{codebox}{}{Ex:7812973891220} \q{\qbox\qbb[1]} \end{codebox} \begin{codebox}{}{ex:78129738912270454} \q{ \qcaprev \qcap \n \qwire \qbraid \qwire \n \qwire \qbraid \qwire \n \qcup \qcuprev \qbb[4,7] } \end{codebox} \begin{CODEBOX}{}{Ex:7812973891221} \q{\qbox\qbox\qbox\qbox\qbox\qbox\qbb[yellow][2,...,5]} \end{CODEBOX} \begin{codebox}{}{Ex:74839722} \q { \qbox\qbox\qbox\n \qbox\qbox\qbox \qbb[green][2,5] } \end{codebox} \begin{codebox}{}{Ex:7812973891218} \q{ \qcaprev \qcap \n \qwire \qbraid \qwire \n \qwire \qbraid \qwire \n \qcup \qcuprev \qbb[blue][4,7] } \end{codebox} \begin{verbatim} \qbball[<色>] \end{verbatim} 複数 (一個でも良いが) のバウンディングボックスを一度に可視化する. \begin{codebox}[center lower,listing side text,righthand width=5cm,bicolor,colbacklower=white]{}{Ex:78129738912270511} \q{ \qcaprev \qcap \n \qwire \qbraid \qwire \n \qwire \qbraid \qwire \n \qcup \qcuprev \qbball } \end{codebox} 各素子のバウンディングボックスが重なることなく組み合っていることが判る. \qworldname パッケージは, 図式描画に伴う\textbf{細かく面倒な座標設定の多くを省略できる}. \begin{verbatim} \qBBall[<色>] \end{verbatim} キャンバス内の全素子を囲むバウンディングボックスを表示する. \begin{codebox}[center lower,listing side text,righthand width=5cm,bicolor,colbacklower=white]{}{Ex:7812973891216} \q{ \qcaprev \qcap \n \qwire \qbraid \qwire \n \qwire \qbraid \qwire \n \qcup \qcuprev \qBBall } \end{codebox} \begin{verbatim} \bbsymbol[<方角>]{}[<オプション>] \end{verbatim} 直前のバウンディングボックスにテキストを配置する. \begin{itemize} \item 第一引数 (オプション): \showcmd[]{N} (北), \showcmd[]{S} (南), \showcmd[]{E} (東), \showcmd[]{S} (西), \showcmd[]{NW} (北西), \showcmd[]{NE} (北東), \showcmd[]{SE} (南東), \showcmd[]{SW} (南西) のいずれかを指定. デフォルトは\showcmd[]{E}. \item 第二引数: 配置するテキスト. \item 第三引数 (オプション): 位置調整 (例: \showcmd[]{above}, \showcmd[]{below}, \showcmd[]{left}, \showcmd[]{right}). デフォルトは\showcmd[]{right}. \end{itemize} \begin{CODEBOX}{}{Ex:bbsymbol} \q[scale=5]{ \qbox \qbb[1] \bbsymbol{東 (デフォルト)} \bbsymbol[W]{西}[left] \bbsymbol[N]{北}[above] \bbsymbol[S]{南}[below] \bbsymbol[NE]{北東}[above right] \bbsymbol[NW]{北西}[above left] \bbsymbol[SE]{南東}[below right] \bbsymbol[SW]{南西}[below left] \bbsymbol[C]{重心}[] } \end{CODEBOX} \begin{CODEBOX}{}{Ex:7812973891215} \q { \qcaprev \qcap \n \qwire \qbraid \qwire \n \qwire \qbraid \qwire \n \qcup \qcuprev \qbb[red][1,2] \bbsymbol{Measure} \bbsymbol[W]{Output}[left] \bbsymbol[NW]{Computation}[above left] \bbsymbol[NE]{Physics}[above right] \qbb[yellow][3,5,6,8] \bbsymbol{Braid} \bbsymbol[W]{Compute}[left] \qbb[cyan][9,10] \bbsymbol{Create} \bbsymbol[W]{Initialize}[left] } \end{CODEBOX} \subsection{ボックスのカスタマイズ} \label{subsec:boxcustomization} キーを使い, ボックスの経線の数や配置を調整できる. 例えば以下のようなボックスが描画可能である: \begin{itemize} \item \(\q[scale=0.5]{\qbox[p=20,hlen=3]}\) \item \(\q[scale=0.5]{\qbox[p=10,N={1,2,3,8,9,10},S={4,5,6,7},hlen=3]}\) \end{itemize} これらのキーはワイヤー以外の多くの素子にも適用可能である. 主要なキーは以下の通り: \begin{itemize} \item \showcmd[]{n} \iitem ボックス\(\q[scale=0.5]{\qbox[p=2, P={}]}\)の北縁において経線\q[scale=0.31]{\qwire}を生やすことができる点 (このような点を\showcmd[]{n}端子と呼ぶこととする) の数. \iitem 例えば \showcmd[]{n=3}とすれば, ボックスの北縁に \(3\) 点等間隔に打つことができる. \iitem デフォルト値は \showcmd[]{n=1}. \iitem \showcmd[]{n}端子を最北端まで垂直移動させた点を\showcmd[]{N}端子と呼ぶ. \iitem \showcmd[]{n}端子及び\showcmd[]{N}端子は西 (左) から順に\(1,2,...\)と添え字付けられる. \iitem \(i\)番目の\showcmd[]{n}端子に経線を生やすとは, \(i\)番目の\showcmd[]{n}端子と\(i\)番目の\showcmd[]{N}端子を線分で結ぶことをいう. \item \showcmd[]{N} \iitem 経線を実際に生やす\showcmd[]{n}端子の添え字の集合. \iitem 例えば \showcmd[]{n=3}とした上で\showcmd[]{N=\{2\}}とすれば, \(3\)点のうち\(2\)番目の\showcmd[]{n}端子に経線を生やすことができる. \iitem \showcmd[]{n}が未指定で, \showcmd[]{N}が指定されているときは, 自動で \(\showcmd[]{n}\coloneq\max\showcmd[]{N}\) となる. \iitem \showcmd[]{N}が未指定で, \showcmd[]{n}が指定されているときは, 自動で \(\showcmd[]{N}\coloneq\{1,...,\showcmd[]{n}\}\) となる. \iitem \showcmd[]{n}端子から実際に生えた経線の最北端を出力点, あるいは\showcmd[]{O}端子と呼ぶこととする. \item \showcmd[]{s} \iitem ボックスの南縁において経線を生やすことができる点 (このような点を\showcmd[]{s}端子と呼ぶこととする) の数. \iitem 例えば \showcmd[]{s=4}とすれば, ボックスの南縁に\(4\)点等間隔に打つことができる. \iitem デフォルト値は\showcmd[]{s=1}. \iitem \showcmd[]{s}端子を最南端まで垂直移動させた点を\showcmd[]{S}端子と呼ぶ. \iitem \showcmd[]{s}端子及び\showcmd[]{S}端子は西 (左) から順に\(1,2,...\)と添え字付けられる. \iitem \(i\)番目の\showcmd[]{s}端子に経線を生やすとは, \(i\)番目の\showcmd[]{s}端子と\(i\)番目の\showcmd[]{S}端子を線分で結ぶことをいう. \item \showcmd[]{S} \iitem 経線を実際に生やす\showcmd[]{s}端子の添え字の集合. \iitem 例えば \showcmd[]{s=4}とした上で \showcmd[]{S=\{1,4\}} とすれば, \(4\)点のうち\(1\)番目と\(4\)番目の点に経線を生やすことができる. \iitem \showcmd[]{s}が未指定で, \showcmd[]{S}が指定されているときは, 自動で \(\showcmd[]{s}\coloneq\max \showcmd[]{S}\) となる. \iitem \showcmd[]{S}が未指定で, \showcmd[]{s}が指定されているときは, 自動で \(\showcmd[]{S}\coloneq\{1,...,\showcmd[]{s}\}\) となる. \iitem \showcmd[]{s}端子から実際に生えた経線の最南端を入力点, あるいは\showcmd[]{I}端子と呼ぶこととする. \item \showcmd[]{hlen} \iitem 水平方向のバウンディングボックスの長さ. \iitem 例えば\showcmd[]{hlen=2}とすれば, 水平方向のバウンディングボックスの長さが\(2\)となる. \iitem 唯一つの例外を除いて, 最西端の経線とバウンディングボックスの境界線との距離, 最東端の経線とバウンディングボックスの境界線との距離はともに\(\fpeval{0.5}\)である. \iitem \showcmd[]{hlen}が未指定であるとき, \showcmd[]{n}端子及び\showcmd[]{s}端子は, 間隔を\(1\)に保って並べられる. \iitem \showcmd[]{hlen}が指定されているとき, \showcmd[]{n}端子及び\showcmd[]{s}端子は, 長さ\(\showcmd[]{hlen}-1\)の区間を等間隔に並べられる. このときの端子の間隔は\showcmd[]{hlen}及び端子の数に依存する. \iiitem 端子の数が\(1\)つであるときは, 区間の中心に置かれる. このとき, \(\showcmd[]{hlen}>1\) であるならば, 最西端の経線とバウンディングボックスの境界線との距離, 及び最東端の経線とバウンディングボックスの境界線との距離はともに\(\frac{\showcmd[]{hlen}}{2}>\fpeval{0.5}\)である. \item \showcmd[]{vlen} \iitem 垂直方向のバウンディングボックスの長さ (高さ). \iitem デフォルト値は \showcmd[]{vlen=1}. \item \showcmd[]{id} \iitem ボックスの識別子. \iitem 例えば\showcmd[]{id=ID}とすれば, ここまで登場した様々な点に次のような名前が自動的に付けられる: \iiitem (西から数えて) \(i\)番目の\showcmd[]{n}端子: (n-\(i\)-ID) \iiitem \(i\)番目の\showcmd[]{s}端子: (s-\(i\)-ID) \iiitem \(i\)番目の\showcmd[]{n}端子をボックスの北縁へ垂直移動させた点: (N-\(i\)-ID) \iiitem \(i\)番目の\showcmd[]{s}端子をボックスの南縁へ垂直移動させた点: (S-\(i\)-ID) \iiitem バウンディングボックスの最北西端: (NW-ID) \iiitem バウンディングボックスの最北東端: (NE-ID) \iiitem バウンディングボックスの最南西端: (SW-ID) \iiitem バウンディングボックスの最南東端: (SE-ID) \iiitem バウンディングボックスの最北端: (N-ID) \iiitem バウンディングボックスの最南端: (S-ID) \iiitem バウンディングボックスの最西端: (W-ID) \iiitem バウンディングボックスの最東端: (E-ID) \iiitem バウンディングボックスの重心: (C-ID) \iiitem ボックスの最北西端: (nw-ID) \iiitem ボックスの最北東端: (ne-ID) \iiitem ボックスの最南西端: (sw-ID) \iiitem ボックスの最南東端: (se-ID) \iiitem ボックスの最北端: (n-ID) \iiitem ボックスの最南端: (s-ID) \iiitem ボックスの最西端: (w-ID) \iiitem ボックスの最東端: (e-ID) \iiitem \(i\) 番目の出力点: (O-\(i\)-ID) \iiitem \(i\) 番目の入力点: (I-\(i\)-ID) \iitem 指定の有無にかかわらず, \showcmd{q\{...\}}内に置かれた各コマンドには識別番号が振られている. 各々\showcmd[]{ID}部分をその番号に置き換えても同じ点を表す. 詳細は \ref{subsec:showid} 節を確認されたし. \item \showcmd[]{p}, \showcmd[]{P} \iitem 正整数\showcmd[]{k}に対して, \showcmd[]{p=k}は\showcmd[]{n=k}, \showcmd[]{s=k}を意味する. \iitem 正整数の有限集合\showcmd[]{K}に対して, \showcmd[]{P=K}は\showcmd[]{N=K}, \showcmd[]{S=K}を意味する. \item \showcmd[]{name} \iitem \showcmd[]{name=} により, ボックスの重心に\showcmd[]{}が置かれる. \end{itemize} \begin{CODEBOX}{}{ex:boxpoints} \def\pradius{0.4pt} \q[scale=5] { \qbox [ n=3,N={2}, s=4,S={1,4}, hlen=2, vlen=2, id={ID}, name={重心 (C-ID)} ]\n \qbb[ID] \node [above] at (NE-ID) {NE-ID}; \node [above] at (NW-ID) {NW-ID}; \node [below] at (SE-ID) {SE-ID}; \node [below] at (SW-ID) {SW-ID}; \fill (NE-ID) circle (\pradius); \fill (NW-ID) circle (\pradius); \fill (SE-ID) circle (\pradius); \fill (SW-ID) circle (\pradius); \node [above] at (ne-ID) {ne-ID}; \node [above] at (nw-ID) {nw-ID}; \node [below] at (se-ID) {se-ID}; \node [below] at (sw-ID) {sw-ID}; \fill (ne-ID) circle (\pradius); \fill (nw-ID) circle (\pradius); \fill (se-ID) circle (\pradius); \fill (sw-ID) circle (\pradius); \foreach\i in {1,...,3} { \symboln[\i]{n-\i-ID}[below] \fill (n-\i-ID) circle (\pradius); \symbolN[\i]{N-\i-ID} \fill (N-\i-ID) circle (\pradius); } \foreach\i in {1,...,4} { \symbols[\i]{s-\i-ID}[above] \fill (s-\i-ID) circle (\pradius); \symbolS[\i]{S-\i-ID}[below] \fill (S-\i-ID) circle (\pradius); } \draw[line width=0.2pt] (NW-ID) to [bend left=60] node [fill=white, midway] {hlen} (NE-ID); \draw[line width=0.2pt] (NW-ID) to [bend right=60] node [fill=white, midway] {vlen} (SW-ID); \draw [red, <->] (C-ID -| W-ID) -- node [midway, auto, font=\footnotesize] {0.5} (C-ID -| S-1-ID); \draw [red, <->] (C-ID -| S-4-ID) -- node [midway, auto, font=\footnotesize] {0.5} (C-ID -| E-ID); \qwire[arrowtype={loosely dotted}, dom={s-1-ID}, cod={n-1-ID}] \qwire[arrowtype={loosely dotted}, dom={s-4-ID}, cod={n-3-ID}] \node (O1prime) at ([shift={(0.25,0.25)}]O-1-ID){O-1-ID}; \draw[->,red] (O1prime) to ([shift={(0.05,0.05)}]O-1-ID); \node (I1prime) at ([shift={(0.5,-0.5)}]I-1-ID){I-1-ID}; \node (I2prime) at ([shift={(0.5,-0.5)}]I-2-ID) {I-2-ID}; \draw[->,red](I1prime) to ([shift={(0.05,-0.05)}]I-1-ID); \draw[->,red](I2prime) to ([shift={(0.05,-0.05)}]I-2-ID); } \end{CODEBOX} \verb|\qwire|の\verb|arrowtype|キーと\verb|dom|, \verb|cod|キーは \pageref{subsec:wirecustomization}ページの\ref{subsec:wirecustomization}節にて説明する. \paragraph{ラベル (\showcmd{symbol})} \begin{verbatim} \symbolI[<番号>]{