いくつかの例
最初に、図の例をいくつか示します。 複雑な分析、微分幾何学、電気力学、楕円曲線に関する学士論文のために作られています。 私は講義中にそれらを描きました-もちろん、私の論文を除いて-Inkscapeを使用しているので、これから始めましょう。
![](https://habrastorage.org/getpro/habr/post_images/a3d/835/524/a3d8355247bd45c94fc1fe6488ad35e7.png)
![](https://habrastorage.org/getpro/habr/post_images/bc5/ba8/1b4/bc5ba81b41cf31017d6d471157a8b96f.png)
![](https://habrastorage.org/getpro/habr/post_images/468/2e0/77d/4682e077db8e6ea1f6db10f519945d28.png)
![](https://habrastorage.org/getpro/habr/post_images/78d/0c2/9bd/78d0c29bd1e86f8de35ecd1a597d113a.png)
![](https://habrastorage.org/getpro/habr/post_images/642/b31/7a7/642b317a7bf3a567ee3a84116183fc56.png)
Inkscapeとは何ですか?
Inkscapeは、すべての主要プラットフォームで利用可能なオープンソースのベクターグラフィックエディターです。 これは無料ですが、おそらくAdobe Illustratorに比べて機能が劣ります。 下の画像のように、チラシやロゴをデザインするために使用できますが、幾何学的図形を描くための強力なツールでもあります。
![](https://habrastorage.org/getpro/habr/post_images/dbd/836/083/dbd83608392526716e011ccccc608fd4.png)
なぜ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}
次の画像を表示します。
![](https://habrastorage.org/getpro/habr/post_images/495/c0e/1ef/495c0e1effe15fd0c795c1d19ca1e6a7.png)
これらのパッケージの利点は、描画がプログラミングに非常に似ていることです。変数を使用したり、計算を実行したり
for
ループに使用
for
たりできます。さらに、すべてのテキストが直接LaTeX これは、数式を簡単に入力できることを意味し、後でドキュメントのフォントを変更することにした場合、すべての写真は新しいフォントに従って自動的に変更されます。
ただし、これらの利点を得るには、視覚的なフィードバックの欠如と低速の費用を支払う必要があります。 複雑な形状の描画は本質的にグラフィカルなタスクであり、グラフィカルインターフェイスがないと非常に時間がかかります。 オブジェクトをクリックしてドラッグしたり、手動で曲線を描いたり、ベジェ曲線の制御点をドラッグしたりすることはできません。 このため、TikZはInkscapeよりもはるかに複雑で低速です。 私は時々複雑な図面にTikZを使用しますが、ほとんどの場合、特に講義中に時間のプレッシャーにさらされている場合、Inkscapeの利点はTikZの利点をはるかに上回ります。
以上で終わりです。始めましょう。
Inkscape図面をLaTeXドキュメントに埋め込む
TikZと同様に、InkscapeにはLaTeXを使用して図面にテキストを表示する機能があります。 これを行うために、エディターは数値をpdfとLaTeXファイルの両方にエクスポートします。 別のテキストを含む最初の画像と、LaTeXファイル-テキストの正しい配置に必要なコード。 たとえば、Inkscapeで次のような図面を操作しています。
![](https://habrastorage.org/getpro/habr/post_images/a17/a20/001/a17a20001eaf1118264551dee81815dd.png)
リーマンの定理
この画像をLaTeXドキュメントに含めるには、 [ファイル ] › [名前を付けて保存 ]メニューに移動し、拡張子として[pdf]を選択して[ 保存 ]をクリックすると、次のダイアログボックスが表示されます。
![](https://habrastorage.org/getpro/habr/post_images/4f2/783/349/4f27833491554fa5845eb2600f24ec9c.png)
「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}
ドキュメントをコンパイルすると、次のように表示されます。
![](https://habrastorage.org/getpro/habr/post_images/51e/1b7/bd9/51e1b7bd9a3691f6f2a90554cfdd864e.png)
ご覧のとおり、テキストはLaTeXを使用してレンダリングされています。 後でフォントを変更することにした場合、それに応じて更新されます。
![](https://habrastorage.org/getpro/habr/post_images/8b7/ca4/03c/8b7ca403c83cb410958ec55eea5bdde0.png)
このようなシステムでは、LaTeXでの入力を続けながらInkscapeで描画できます。
図面をすばやく作成して挿入する
講義中に大要を書くとき、フローを中断することなく、その場で図面を追加する必要があります。つまり、Inkscapeを開いたり、正しいディレクトリを見つけたり、LaTeXコードを入力して図を手動で挿入したりするなど、時間を無駄にしないでください。 これを避けるために、図面を管理するためのキーボードショートカットをVimに追加しました。 たとえば、画像のタイトルを
Ctrl+F
を
Ctrl+F
と、次のことが起こります。
- スクリプトは、LaTeXルートファイルの場所に応じて図面のカタログを検索します。
- 次に、同じ名前の図面が存在するかどうかを確認します。 その場合、スクリプトは何もしません。
- そうでない場合、パターンテンプレートは
/figures
ディレクトリにコピーされます。
- 画像のタイトルを含む現在の行は、挿入するためのLaTeXコードに置き換えられます。
- Inkscapeで新しい図面が開きます。
- ファイル監視は
Ctrl+S
押して画像をsvgファイルに保存するたびに、pdf + LaTeXとしても保存されるように構成されます。 したがって、前に説明した迷惑なpdf保存ダイアログは表示されなくなりました。
実行中のスキーム:
![](https://habrastorage.org/getpro/habr/post_images/a48/c6e/f9b/a48c6ef9b7407f13e4e0e86b2649333f.gif)
写真を編集したいときは、通常モードで
Ctrl+F
を
Ctrl+F
ます。 選択ダイアログボックスが開き、現在のドキュメントのパターンを検索できます。 選択すると、Inkscapeで図面が開きます。 保存すると、貼り付けコードがクリップボードにコピーされます。 したがって、ソースを削除した場合は、再挿入できます。
![](https://habrastorage.org/getpro/habr/post_images/6f6/ff7/a6c/6f6ff7a6c0d74474ae9177369c8392a9.gif)
これらのホットキーを使用すると、その場で図面を追加して開くことができます。 pdf + LaTeXを指定する必要があるそれぞれについて、正しいディレクトリを選択するか、挿入するコードを記述することを覚えておく必要はありません。 新しい画像を追加する際の障壁は、手動で行う場合よりもはるかに低くなります。 私の画像管理スクリプトはGithubで公開されています。
管理を理解した後、Inkscapeで実際に図形を描画する方法について話しましょう。
描画
Inkscapeでの描画は通常TikZでの描画よりも高速ですが、手動での描画よりも依然として低速です。 このプロセスは、Inkscapeの組み込みキーボードショートカットで加速されますが、それでも十分ではありません。
そこで、Inkscapeに到達する前にすべてのキーボードイベントをインターセプトできる自家製のキーボードショートカットマネージャーをPythonでプログラムすることにしました。 そのため、各キーストロークをどのように解釈するかを完全に制御できるため、柔軟性が大幅に向上します。
図形を描く
Inkscapeの組み込みキーボードショートカットから始めましょう。 たとえば、
r
は長方形描画ツールをアクティブにし、
e
は楕円などを描画します。実装の観点からすると、これは組み合わせマネージャーがこれらのキーボードイベントを「再生」する、つまり単にInkscapeに転送することを意味します。
ただし、鉛筆のデフォルトのショートカット
p
とベジェ曲線の
b
代わりに、右マウスの場合は左手でクリックする方が少し便利なので、
w
と
f
を使用します。 左利きの組み合わせの精神では、
z
をキャンセルし、
Shift+z
を削除し、
x
をスナップに切り替えます。これは通常、到達困難な
%
割り当てられます。
一般的に使用されるスタイルのキーの組み合わせ
スタイルオブジェクトは、Inkscapeで2番目によくあることです。 図形を描画するためのスタイルは非常に簡単です。
- 長方形や円などの形状は、通常、おそらく黒、薄灰色、白、または透明です。 アウトライン付き。
- 線(等高線を含む)は、ほとんどが実線、破線、または点線です。 それらは太字または通常の幅で、場合によっては片側または両側に矢印が付いています。
これらのオプションの組み合わせにより、一般的に使用されるスタイルの次の表が提供されます。
![](https://habrastorage.org/getpro/habr/post_images/d20/c8f/ca2/d20c8fca2750f96b0535992d0cc02bdb.png)
私はこれらのスタイルを頻繁に使用するので、すぐに実行したいのですが、Inkscapeのデフォルトのショートカットを使用するには時間がかかりすぎます。 たとえば、一部のオブジェクトのスタイルを次のように変更します。
![](https://habrastorage.org/getpro/habr/post_images/e93/9d1/818/e939d18189933d5ae1cff3e9bc93c13d.png)
Inkscapeのキーボードショートカットを使用してこれを行うことはできないため、スタイルパネルを開き、クリックして各オブジェクトのスタイルを更新するには、
Ctrl+Shift+F
を
Ctrl+Shift+F
必要があります。 これは疲れる。 理想的には、このような操作を一瞬で実行したいと思います。
![](https://habrastorage.org/getpro/habr/post_images/863/913/dd0/863913dd071183ce203e5f34db5641b7.gif)
これは、2つ以上の同時キーストロークで構成されるキーボードショートカットが登場する場所です。 たとえば、
s
と
f
を同時に押すと、コンビネーションマネージャーは、現在の選択にソリッドアウトラインとグレーの塗りつぶしを適用します。 太字のアウトラインが必要な場合は、
s+f+g
同時に押します
g
は太字を意味します。
したがって、各プロパティはキーに対応します:
s
は通常の輪郭、
f
はグレーの塗りつぶし、
g
は厚さ、
a
は矢印、
d
はポイント、
e
は点線などを示します。
![](https://habrastorage.org/getpro/habr/post_images/ae4/536/4f2/ae45364f2423fb0546a0aaf74f46ba7a.png)
この表の一部のスタイルは、1つのキーのみに対応しています。たとえば、左上隅のスタイル:アウトラインのない灰色の塗りつぶし。 1つの
f
押すとベジェ曲線ツールが起動するため、これは問題になる可能性があります。 解決策は、
+ f
を押す
+ f
です。スペースはプレースホルダーとして機能します。
このような組み合わせにより、以前の問題は数回タップするだけで解決されます。
-
f
+s
は長方形を灰色にし、実線の輪郭を追加します。
-
f
+h
+e
はパディングと太字の点線を意味します
-
a
+g
+d
は矢印を追加し、線を太い点線に変えます。
![](https://habrastorage.org/getpro/habr/post_images/ead/303/302/ead30330292ec820d614b2ef69a0f907.gif)
テキストを追加する
数式はしばしば図面に含まれているため、スニペットをVimで使用したいと思います 。 これを行うには、
t
を押して、LaTeXコードを入力する小さなVimウィンドウを開きます。 終了後、テキストフラグメントはInkscapeに挿入されます。
![](https://habrastorage.org/getpro/habr/post_images/ca4/e1a/d5e/ca4e1ad5e470b77c905ac3c004e2fd77.gif)
前述したように、ドキュメントに画像を挿入すると、LaTeXによってこのテキストが表示されます。 しかし、時々LaTeXをすぐに表示したいことがあります。これは
Shift+T
実行できます。
![](https://habrastorage.org/getpro/habr/post_images/510/80c/e34/51080ce34ccfb23e55eee8b599c116ee.gif)
どちらのオプションにも長所と短所があります。 基本的に、テキストはLaTeXドキュメントに表示されるため、最初の方法を使用します。 つまり、フォントは常に一致し、ドキュメントのプリアンブルで定義されたマクロを使用できます。 ただし、欠点があります。テキストの配置を行うのが少し難しい場合があります。 Inkscapeには最終結果が表示されないため、Inkscapeからpdfビューアに切り替えて、結果を微調整する必要がある場合があります。
まれなスタイルの保存と使用
ケースの90%では基本的なスタイルで十分ですが、場合によっては特別なスタイルを使用することもできます。 たとえば、光学系に図を描くには、ガラスと梁のスタイルを使用すると便利です。 これを行うには、最初にデフォルトの組み合わせを使用してInkscapeでスタイルを作成する必要があります。
![](https://habrastorage.org/getpro/habr/post_images/0ff/713/b29/0ff713b294966af16e328f0cbcfcd17c.png)
これらのスタイルを保存するには、オブジェクトの1つを選択して
Shift + s
を押し
Shift + s
。 次に、新しいスタイルの名前(この場合は「glass」)を入力し、Enterを押して確認します。 これでスタイルが保存され、後で使用できます。
これで、オブジェクトを選択し、
s
を押して「glass」と入力すると、対応するスタイルがオブジェクトに適用されます。 ただし、完全な名前を入力する必要はありません。スタイルだけが入力された文字に一致する場合、スタイルがすぐに適用されるためです。 たとえば、「g」で始まるスタイルが1つしかない場合、この文字の1つを入力するだけでスタイルを適用できます。 複数のスタイルがある場合、「gl」または「gla」を入力する必要があります。
このような状況では、あまりにも多くの文字を入力するとクラッシュします。入力 'gl'はスタイルを設定するが、 'gla'を入力すると、
a
は別のコマンドとして解釈されます。 したがって、コンビネーションマネージャはデフォルトモードに戻る前に500ミリ秒待機します。 この時間は、スタイルが適用されたことを確認し、印刷を停止するのに十分です。
![](https://habrastorage.org/getpro/habr/post_images/2ce/e8b/968/2cee8b968a68a5db3018d72966cad8be.gif)
オブジェクトの追加と保存
設定の最後の要素は、オブジェクトの追加と保存です。これは、それぞれ
Shift+a
キーと
Shift+a
キーで行います。 たとえば、
a
を押して「ec」と入力
a
と、楕円曲線が追加されます。
![](https://habrastorage.org/getpro/habr/post_images/625/e7b/aae/625e7baae7c4dce1acbe9b008994c4a9.png)
別の例:
a
を押し
a
「dg」と入力
a
と、鍵穴、鍵穴が追加されます(「dg」はキーボードの「kh」の鏡像です)。
Ctrl+-
を使用して、指定された形状から図形を減算できます。
![](https://habrastorage.org/getpro/habr/post_images/7b6/77b/963/7b677b963dca0e683aa35f892d6b73fa.gif)
他の例としては、ブロブと2D、3D軸があります。これらは、複雑な分析や微分幾何学でよく使用します。
![](https://habrastorage.org/getpro/habr/post_images/028/4df/ae8/0284dfae8ffaf3d959fd1fd4ca89d9df.png)
コード
自分で試してみたい場合は、Vimで描画を管理するためのスクリプトとInkscapeキーボードショートカットマネージャーが Githubで公開されています。 両方のスクリプトは、Linuxシステムでのみ機能します。 最初のものはそのまま使用でき、2番目のものはおそらく追加の設定が必要です。
おわりに
Inkscapeを使用すると、記事、書籍、プレゼンテーション用のイラストを簡単かつ迅速に作成できます。 彼らはプロフェッショナルに見え、文書にうまく収まります。 これは手で描くよりも遅いですが、ほとんどの場合、InkscapeはTikZよりも高速です。 私のキーボードショートカットとVimで図面を管理するためのスクリプトにより、作業がさらに加速され、講義中に図を描くことができ、講師に追いつくことができます。