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で図面を管理するためのスクリプトにより、䜜業がさらに加速され、講矩䞭に図を描くこずができ、講垫に远い぀くこずができたす。

Source: https://habr.com/ru/post/J450088/


All Articles