Inkscapeで数学の要約のイラストを描く方法

前の記事で、 VimでLaTeXの数学ノートをどのように書くかについて話しました。 この記事では、Inkscapeを使用してこれらの要約の図面を作成する方法と、自家製のホットキーマネージャーについて説明します。



いくつかの例



最初に、図の例をいくつか示します。 複雑な分析、微分幾何学、電気力学、楕円曲線に関する学士論文のために作られています。 私は講義中にそれらを描きました-もちろん、私の論文を除いて-Inkscapeを使用しているので、これから始めましょう。













Inkscapeとは何ですか?



Inkscapeは、すべての主要プラットフォームで利用可能なオープンソースのベクターグラフィックエディターです。 これは無料ですが、おそらくAdobe Illustratorに比べて機能が劣ります。 下の画像のように、チラシやロゴをデザインするために使用できますが、幾何学的図形を描くための強力なツールでもあります。







なぜinkscapeなのか?



LaTeXドキュメントに図面を追加するための最も一般的なソリューションは、TikZ、PSTricks、およびAsymptoteです。 共通点が1つあります。それらはすべてチームで動作します。つまり、図形の描画方法を決定するコードを記述するだけです。 たとえば、TikZコード:



\begin{tikzpicture} \coordinate (A) at (1, 3); \draw[thick, ->] (0, 0) -- (A); \node[above right] at (A) {$A = (1, 2)$}; \end{tikzpicture}
      
      





次の画像を表示します。







これらのパッケージの利点は、描画がプログラミングに非常に似ていることです。変数を使用したり、計算を実行したりfor



ループに使用for



たりできます。さらに、すべてのテキストが直接LaTeX これは、数式を簡単に入力できることを意味し、後でドキュメントのフォントを変更することにした場合、すべての写真は新しいフォントに従って自動的に変更されます。



ただし、これらの利点を得るには、視覚的なフィードバックの欠如と低速の費用を支払う必要があります。 複雑な形状の描画は本質的にグラフィカルなタスクであり、グラフィカルインターフェイスがないと非常に時間がかかります。 オブジェクトをクリックしてドラッグしたり、手動で曲線を描いたり、ベジェ曲線の制御点をドラッグしたりすることはできません。 このため、TikZはInkscapeよりもはるかに複雑で低速です。 私は時々複雑な図面にTikZを使用しますが、ほとんどの場合、特に講義中に時間のプレッシャーにさらされている場合、Inkscapeの利点はTikZの利点をはるかに上回ります。



以上で終わりです。始めましょう。



Inkscape図面をLaTeXドキュメントに埋め込む



TikZと同様に、InkscapeにはLaTeXを使用して図面にテキストを表示する機能があります。 これを行うために、エディターは数値をpdfとLaTeXファイルの両方にエクスポートします。 別のテキストを含む最初の画像と、LaTeXファイル-テキストの正しい配置に必要なコード。 たとえば、Inkscapeで次のような図面を操作しています。





リーマンの定理



この画像をLaTeXドキュメントに含めるには、 [ファイル ] › [名前を付けて保存 ]メニューに移動し、拡張子として[pdf]を選択して[ 保存 ]をクリックすると、次のダイアログボックスが表示されます。











「pdfのテキストを省略してLaTeXファイルを作成」​​を選択すると、図面がpdf + LaTeXとして保存されます。 Inkscape図面をLaTeXドキュメントに挿入するには、次のコードをプリアンブルに追加できます。



 \usepackage{import} \usepackage{xifthen} \usepackage{pdfpages} \usepackage{transparent} \newcommand{\incfig}[1]{% \def\svgwidth{\columnwidth} \import{./figures/}{#1.pdf_tex} }
      
      





figureがfigure figures/riemmans-theorem.svg



にあると仮定すると、簡単なコードで挿入できます:



 \begin{figure}[ht] \centering \incfig{riemmans-theorem} \caption{Riemmans theorem} \label{fig:riemmans-theorem} \end{figure}
      
      





ドキュメントをコンパイルすると、次のように表示されます。







ご覧のとおり、テキストはLaTeXを使用してレンダリングされています。 後でフォントを変更することにした場合、それに応じて更新されます。







このようなシステムでは、LaTeXでの入力を続けながらInkscapeで描画できます。



図面をすばやく作成して挿入する



講義中に大要を書くとき、フローを中断することなく、その場で図面を追加する必要があります。つまり、Inkscapeを開いたり、正しいディレクトリを見つけたり、LaTeXコードを入力して図を手動で挿入したりするなど、時間を無駄にしないでください。 これを避けるために、図面を管理するためのキーボードショートカットをVimに追加しました。 たとえば、画像のタイトルをCtrl+F



Ctrl+F



と、次のことが起こります。



  1. スクリプトは、LaTeXルートファイルの場所に応じて図面のカタログを検索します。

  2. 次に、同じ名前の図面が存在するかどうかを確認します。 その場合、スクリプトは何もしません。

  3. そうでない場合、パターンテンプレートは/figures



    ディレクトリにコピーされます。

  4. 画像のタイトルを含む現在の行は、挿入するためのLaTeXコードに置き換えられます。

  5. Inkscapeで新しい図面が開きます。

  6. ファイル監視はCtrl+S



    押して画像をsvgファイルに保存するたびに、pdf + LaTeXとしても保存されるように構成されます。 したがって、前に説明した迷惑なpdf保存ダイアログは表示されなくなりました。


実行中のスキーム:







写真を編集したいときは、通常モードでCtrl+F



Ctrl+F



ます。 選択ダイアログボックスが開き、現在のドキュメントのパターンを検索できます。 選択すると、Inkscapeで図面が開きます。 保存すると、貼り付けコードがクリップボードにコピーされます。 したがって、ソースを削除した場合は、再挿入できます。







これらのホットキーを使用すると、その場で図面を追加して開くことができます。 pdf + LaTeXを指定する必要があるそれぞれについて、正しいディレクトリを選択するか、挿入するコードを記述することを覚えておく必要はありません。 新しい画像を追加する際の障壁は、手動で行う場合よりもはるかに低くなります。 私の画像管理スクリプトはGithubで公開されています。



管理を理解した後、Inkscapeで実際に図形を描画する方法について話しましょう。



描画



Inkscapeでの描画は通常TikZでの描画よりも高速ですが、手動での描画よりも依然として低速です。 このプロセスは、Inkscapeの組み込みキーボードショートカットで加速されますが、それでも十分ではありません。



そこで、Inkscapeに到達する前にすべてのキーボードイベントをインターセプトできる自家製のキーボードショートカットマネージャーをPythonでプログラムすることにしました。 そのため、各キーストロークをどのように解釈するかを完全に制御できるため、柔軟性が大幅に向上します。



図形を描く



Inkscapeの組み込みキーボードショートカットから始めましょう。 たとえば、 r



は長方形描画ツールをアクティブにし、 e



は楕円などを描画します。実装の観点からすると、これは組み合わせマネージャーがこれらのキーボードイベントを「再生」する、つまり単にInkscapeに転送することを意味します。



ただし、鉛筆のデフォルトのショートカットp



とベジェ曲線のb



代わりに、右マウスの場合は左手でクリックする方が少し便利なので、 w



f



を使用します。 左利きの組み合わせの精神では、 z



をキャンセルし、 Shift+z



を削除し、 x



をスナップに切り替えます。これは通常、到達困難な%



割り当てられます。



一般的に使用されるスタイルのキーの組み合わせ



スタイルオブジェクトは、Inkscapeで2番目によくあることです。 図形を描画するためのスタイルは非常に簡単です。





これらのオプションの組み合わせにより、一般的に使用されるスタイルの次の表が提供されます。







私はこれらのスタイルを頻繁に使用するので、すぐに実行したいのですが、Inkscapeのデフォルトのショートカットを使用するには時間がかかりすぎます。 たとえば、一部のオブジェクトのスタイルを次のように変更します。







Inkscapeのキーボードショートカットを使用してこれを行うことはできないため、スタイルパネルを開き、クリックして各オブジェクトのスタイルを更新するには、 Ctrl+Shift+F



Ctrl+Shift+F



必要があります。 これは疲れる。 理想的には、このような操作を一瞬で実行したいと思います。







これは、2つ以上の同時キーストロークで構成されるキーボードショートカットが登場する場所です。 たとえば、 s



f



を同時に押すと、コンビネーションマネージャーは、現在の選択にソリッドアウトラインとグレーの塗りつぶしを適用します。 太字のアウトラインが必要な場合は、 s+f+g



同時に押しますg



は太字を意味します。



したがって、各プロパティはキーに対応します: s



は通常の輪郭、 f



はグレーの塗りつぶし、 g



は厚さ、 a



は矢印、 d



はポイント、 e



は点線などを示します。







この表の一部のスタイルは、1つのキーのみに対応しています。たとえば、左上隅のスタイル:アウトラインのない灰色の塗りつぶし。 1つのf



押すとベジェ曲線ツールが起動するため、これは問題になる可能性があります。 解決策は、 + f



を押す + f



です。スペースはプレースホルダーとして機能します。



このような組み合わせにより、以前の問題は数回タップするだけで解決されます。









テキストを追加する



数式はしばしば図面に含まれているため、スニペットをVimで使用したいと思います 。 これを行うには、 t



を押して、LaTeXコードを入力する小さなVimウィンドウを開きます。 終了後、テキストフラグメントはInkscapeに挿入されます。







前述したように、ドキュメントに画像を挿入すると、LaTeXによってこのテキストが表示されます。 しかし、時々LaTeXをすぐに表示したいことがあります。これはShift+T



実行できます。







どちらのオプションにも長所と短所があります。 基本的に、テキストはLaTeXドキュメントに表示されるため、最初の方法を使用します。 つまり、フォントは常に一致し、ドキュメントのプリアンブルで定義されたマクロを使用できます。 ただし、欠点があります。テキストの配置を行うのが少し難しい場合があります。 Inkscapeには最終結果が表示されないため、Inkscapeからpdfビューアに切り替えて、結果を微調整する必要がある場合があります。



まれなスタイルの保存と使用



ケースの90%では基本的なスタイルで十分ですが、場合によっては特別なスタイルを使用することもできます。 たとえば、光学系に図を描くには、ガラスと梁のスタイルを使用すると便利です。 これを行うには、最初にデフォルトの組み合わせを使用してInkscapeでスタイルを作成する必要があります。







これらのスタイルを保存するには、オブジェクトの1つを選択してShift + s



を押しShift + s



。 次に、新しいスタイルの名前(この場合は「glass」)を入力し、Enterを押して確認します。 これでスタイルが保存され、後で使用できます。



これで、オブジェクトを選択し、 s



を押して「glass」と入力すると、対応するスタイルがオブジェクトに適用されます。 ただし、完全な名前を入力する必要はありません。スタイルだけが入力された文字に一致する場合、スタイルがすぐに適用されるためです。 たとえば、「g」で始まるスタイルが1つしかない場合、この文字の1つを入力するだけでスタイルを適用できます。 複数のスタイルがある場合、「gl」または「gla」を入力する必要があります。



このような状況では、あまりにも多くの文字を入力するとクラッシュします。入力 'gl'はスタイルを設定するが、 'gla'を入力すると、 a



は別のコマンドとして解釈されます。 したがって、コンビネーションマネージャはデフォルトモードに戻る前に500ミリ秒待機します。 この時間は、スタイルが適用されたことを確認し、印刷を停止するのに十分です。







オブジェクトの追加と保存



設定の最後の要素は、オブジェクトの追加と保存です。これは、それぞれShift+a



キーとShift+a



キーで行います。 たとえば、 a



を押して「ec」と入力a



と、楕円曲線が追加されます。







別の例: a



を押しa



「dg」と入力a



と、鍵穴、鍵穴が追加されます(「dg」はキーボードの「kh」の鏡像です)。 Ctrl+-



を使用して、指定された形状から図形を減算できます。







他の例としては、ブロブと2D、3D軸があります。これらは、複雑な分析や微分幾何学でよく使用します。







コード



自分で試してみたい場合は、Vim描画を管理するためスクリプトInkscapeキーボードショートカットマネージャーが Githubで公開されています。 両方のスクリプトは、Linuxシステムでのみ機能します。 最初のものはそのまま使用でき、2番目のものはおそらく追加の設定が必要です。



おわりに



Inkscapeを使用すると、記事、書籍、プレゼンテーション用のイラストを簡単かつ迅速に作成できます。 彼らはプロフェッショナルに見え、文書にうまく収まります。 これは手で描くよりも遅いですが、ほとんどの場合、InkscapeはTikZよりも高速です。 私のキーボードショートカットとVimで図面を管理するためのスクリプトにより、作業がさらに加速され、講義中に図を描くことができ、講師に追いつくことができます。



All Articles