いくつかの例
最初に、図の例をいくつか示します。 複雑な分析、微分幾何学、電気力学、楕円曲線に関する学士論文のために作られています。 私は講義中にそれらを描きました-もちろん、私の論文を除いて-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
と、次のことが起こります。
- スクリプトは、LaTeXルートファイルの場所に応じて図面のカタログを検索します。
- 次に、同じ名前の図面が存在するかどうかを確認します。 その場合、スクリプトは何もしません。
- そうでない場合、パターンテンプレートは
/figures
ディレクトリにコピーされます。
- 画像のタイトルを含む現在の行は、挿入するためのLaTeXコードに置き換えられます。
- Inkscapeで新しい図面が開きます。
- ファイル監視は
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
です。スペースはプレースホルダーとして機能します。
このような組み合わせにより、以前の問題は数回タップするだけで解決されます。
-
f
+s
は長方形を灰色にし、実線の輪郭を追加します。
-
f
+h
+e
はパディングと太字の点線を意味します
-
a
+g
+d
は矢印を追加し、線を太い点線に変えます。

テキストを追加する
数式はしばしば図面に含まれているため、スニペットを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で図面を管理するためのスクリプトにより、作業がさらに加速され、講義中に図を描くことができ、講師に追いつくことができます。