ラテックスのコードは、マクロパッケージの鋳造使用法を強調しています



Code Latex Highlights Macro Package Minted Usage



前提

mintedを使用するには、Python環境とPygmentsモジュールをインストールする必要があります。これは、mintedがモジュールに依存して、300を超える言語の構文の強調表示を提供するためです。

ラテックスコンパイラは、Pygmentsプログラムを呼び出す必要があるため、オプション-shell-escapeも追加する必要があるため、texコンパイラにこのオプションを伝えます。



基本的な使用法:

egin{minted}{} end{minted}

完全な例は次のとおりです。

documentclass{article} usepackage{minted} egin{document} egin{minted}{c} int main() { printf('hello, world') return 0 } end{minted} end{document}

ミントされた環境に加えて、mintコマンドを使用して、次のような環境を置き換えることもできます。



mint{python}|import this|

さらに、次のようなラインで使用することもできます。

wordsmintinline{python}{print(x**2)}words

強調表示するコードをファイルから入力することもできます。

inputminted[]{}{}.

mintedパッケージは、コードをフローティング表示するためのフローティングボディ環境のリストも提供します。といった:



egin{listing}[H] mint{cl}/(car (cons 1 '(2)))/ caption{Example of a listing.} label{lst:example} end{listing}

使用することもできますlistoflistingsコードをリストするディレクトリを生成します。

オプション

Mintedはオプションを使用できますkey=value指定方法ですが、指定された場合のみkey次にデフォルトオプションを使用します。ドキュメント内の同じ言語で表示されるすべてのコードに同じオプションを設定することもできます。
コマンドを使用したインターラインおよびインラインコードsetminted with setmintedinline設定。

一般的なオプションは次のとおりです。

  • langlinenosオプションを使用すると、強調表示されたコードの行数をさまざまな言語でカウントできます。

  • Autogobbleオプションは、先頭のスペースを削除できます

  • ベースラインストレッチオプションは、行間隔のスケール値を設定します

  • Beameroverlaysオプションを使用すると、only{...}などのオーバーレイ機能をBeamerに実装できます。

  • breakafterオプションは、改行後に折り返すことができるインラインコードの文字を指定できます。
    文字セットは、breakafter=-/dのような文字列です。

egin{minted}[breaklines, breakafter=d]{python} some_string = 'SomeTextThatGoesOnAndOnForSoLongThatItCouldNeverFitOnOneLine' end{minted}
  • breakaftergroupオプションのデフォルトはtrueです。つまり、breakafterオプションを使用すると、改行文字に同じ隣接文字がある場合、最後の文字の後に改行が入ります。

  • breakaftersymbolpreおよびbreakaftersymbolpostオプションは、ブレークの前後に追加される文字を指定するために使用されます。

  • breakanywhereオプションは、breaklines=true任意の文字で行を分割できる場合に行間コード環境で使用されます。

  • Breakanywheresymbolpreおよびbreakanywheresymbolpostは、breakaftersymbolpreおよびbreakaftersymbolpostオプションに似ています。

  • breakautoindentオプションは、改行後の行の自動インデントを設定するために使用されます。

  • Breakbeforeはbreakafterに似ています。

  • Breakbeforegroupはbreakaftergroupに似ています。

  • Breakbeforesymbolpre、breakbeforesymbolpostも、breakaftersymbolpreおよびbreakaftersymbolpostに似ています。

  • breakbytokenオプションは、トークン内の改行を防ぎます。

  • breakbytokenanywhereオプションは、トークン内の改行を防ぎますが、トークン間で改行することを許可します。

  • breakindentオプションは、1emなど、改行後の行のインデント距離を設定するために使用されます。

  • breakindentncharsオプションは、インデント距離を1文字幅の倍数(2回など)に設定します。

  • ブレークラインオプションを使用すると、コードを中断できます。

  • Breaksymbolはbreaksymbolleftと同等であり、改行の後の行の前に追加される文字を設定するために使用されます。

  • Breaksymbolrightは、文字を改行の右側に設定するために使用されます。

  • Breaksymbolindentはbreaksymbolindentleftと同等であり、breaksymbolleft文字のインデント距離を設定します

  • Breaksymbolindentncharsは、breaksymbolindentleftncharsと同等であり、文字幅の倍数として表されるbreaksymbolleft文字のインデント距離を設定します。

  • Breaksymbolindentrightは、breaksymbolright用のスペースを提供する右側の追加のインデント距離です。

  • Breaksymbolindentrightncharsは、breaksymbolright用のスペースを提供する右側の追加のインデント距離です。文字幅の倍数で表されます。

  • Breaksymbolsepはbreaksymbolsepleftと同等であり、breaksymbolleftと隣接するテキストの間隔を設定します。

  • Breaksymbolsepncharsは、breaksymbolleftと隣接するテキストの間隔を設定するbreaksymbolsepleftncharsと同等です。文字幅の倍数で表されます。

  • Breaksymbolsepright、breaksymbolrightと隣接するテキストの間隔を設定します。

  • Breaksymbolseprightnchars、breaksymbolrightと隣接するテキストの間隔を設定します。文字幅の倍数で表されます。

  • Bgcolorは背景色を設定します。より高度な色設定を使用する場合は、ミント環境をmdframedやtcolorboxなどの環境に配置できます。 tcolorboxを使用する場合は、設定できます。 cbuselibrary{minted}。次に、次のようにtcblisting環境を直接使用します。

egin{tcblisting}{, minted language=, minted style=, minted options={} } end{tcblisting}
  • Codetagifyを使用して、todo、バグ、メモなど、コメントまたはdocstring内の特別なタグを強調表示できます。

  • Curlyquotesは `` `を実行し、'文字は引用符に変換されます。

  • エンコーディングPygmentsが認識するファイルエンコーディングを設定します。

  • Escapeinsideは、エスケープされた文字ペアを設定するために使用されます。文字ペアのコードは、通常、latexによって解析されます。このオプションは、コードでlatexコマンドを使用するために必要です。

といった:

egin{minted}[escapeinside=||]{py} def f(x): y = x|colorbox{green}{**}|2 return y end{minted}
  • 最初の行は表示コードの最初の行を設定し、その行より前のすべての行は無視されます。

  • Firstnumberは、最初の行の行番号を設定します。

  • Fontfamilyは、tt、courierなどの事前定義された単語のファミリーを設定します。

  • Fontseriesは、事前定義された単語システムを設定します。

  • Fontsize事前定義されたフォントサイズを設定します。

  • Fontshapeは、事前定義されたグリフを設定します。

  • Formatcomは、フックであるトランスクリプトコードの前に実行されたコマンドを出力します。

  • フレームコードの周囲の線を設定します。なし|左行|トップライン|収益|行|シングル

  • Frameruleは、境界線の幅を設定します。

  • Framesep境界線とコンテンツの間の間隔を設定します。

  • Gobbleは、各行の先頭で削除される文字数を設定します。

  • Highlightcolorは、強調表示する必要のある色を設定します。

  • ハイライトラインは、ハイライトする必要のある行の行番号を設定します。これは、highlightlines={1, 3-4}などの文字列です。

  • キーワードケースは、キーワードの大文字と小文字、小文字、大文字、大文字の大文字を設定します。

  • ラベルコードの周囲にラベルの内容を印刷します。

  • Labelpositionは、ラベルの位置を設定します。トップライン|収益|すべて

  • Lastlineは、表示コードの最後の行を設定します。この行は後に表示されません。

  • linenos設定は、行番号が表示されるかどうかを示します。行番号のスタイルを変更するには、 heFancyVerbLineマクロを再定義する必要があります。

といった:

enewcommand{ heFancyVerbLine}{sffamily extcolor[rgb]{0.5,0.5,1.0}{scriptsize oldstylenums{arabic{FancyVerbLine}}}} egin{minted}[linenos, firstnumber=11]{python} def all(iterable): for i in iterable: if not i: return False return True end{minted}
  • Numberfirstlineは、最初の行に常に番号を付けるかどうかを設定し、stepnumberは無視されます。

  • 番号左の行番号を設定するために使用される位置|右|両方|なし

  • Mathescapeは、エスケープ文字ペア内で数学モードを使用できるかどうかを設定するために使用されます。

  • Numberblanklines改行の後に行に番号を付けるかどうかを設定します。

  • Numbersep行番号と行頭の間隔を設定します。

  • Obeytabsは、タブをタブとしてのみ使用し、スペースに変換しないかどうかを設定します。

  • OutencodingPygments出力の強調表示されたテキストのファイルエンコーディングを設定します。

  • Resetmargins他の環境で左マージンをリセットするかどうかを設定します。

  • Rulecolorは境界線の色を設定します

  • Samepageは、適切でない場合でも、すべてのコードを同じページに設定します。

  • showspacesがスペースを表示するかどうか。

  • showtabsがタブを表示するかどうか。

  • スペースは、スペースの表示に使用される文字を設定します

  • Spacecolorは、スペースディスプレイの色を設定します

  • スタイルPygmentsのスタイルシートを設定します。

  • ステップ番号行番号の間隔番号を表示します。

  • Stepnumberfromfirst最初の行から間隔表示行番号を設定するかどうかを設定します。デフォルトでは、行番号nが表示されている場合、mod(n、stepnumber)== 0の場合、このオプションを使用すると、次のようになります。
    mod(n-firstnumber、stepnumber)== 0。

  • Stepnumberoffsetvalues間隔の行番号表示を設定するときに最初の行の行番号を無視するかどうかを設定します。つまり、表示される行は最初の行の行番号とは関係ありませんが、実際の行番号に関連します。行、行番号の値がまだ最初に設定されている場合行番号の後の値。したがって、行番号nが表示される場合はmod(n-firstnumber + 1、stepnumber)== 0です。

  • Stripallは、すべての入力の開始スペースと終了スペースを削除するかどうかを設定します

  • Stripnlは、すべての入力(改行)の開始改行文字と終了改行文字を削除するかどうかを設定します

  • タブタブの表示文字を設定します。showtabs= trueの場合にのみ有効であることに注意してください。FancyVerbTab ightarrowfillおよびその他の文字を使用できます。

  • Tabcolorは、タブの表示色を設定します

  • Tabsizeは、タブ内のスペースの数を設定します

  • texcl設定により、コメントでラテックスコードを使用できるようになります。リストの使用法に似ています。この使用法は、参照用にコメントにラベルを追加する場合に役立ちます。もちろん、escapeinsideを直接使用することもできます。

  • texcomments関数はtexclと同じです。

  • xleftmarginコードブロックの左側のインデントの増加

  • xrightmarginコードブロックの右側のインデントが増加しました

新しい環境を定義する

単にミント環境を使用するのではなく、1つのドキュメントでさまざまな名前の付いた環境を使用して、さまざまなコードを表示したい場合があります。リストパッケージlstnewenvironmentと同様に、ミントパッケージは ewmintedコマンドを使用して次のような新しい環境を定義します。

ewminted{cpp}{gobble=2,linenos} egin{cppcode} template T id(T value) { return value } end{cppcode}

上記のコードは、cppコードを表示するためのcppcode環境を定義しています。 cppcode環境の定義で設定されていないオプションを使用する場合は、使用するときに*記号を使用する必要があります。次に例を示します。

egin{cppcode*}{linenos=false, frame=single} int const answer = 42 end{cppcode*}

同様のmintmintinlineinputmintedクラスコマンドも渡すことができます
ewmint ewmintinline ewmintedfileこのコマンドは、別の言語のコマンドを再定義します。

総括する

上記は主に鋳造パッケージの文書化のためのものであり、使用法が紹介されており、特別なアプリケーションはありません。次の記事では、コード表示に適したアプリケーションを紹介します。

コンパイルについて

作成されたパッケージのドキュメントに注意を払う必要があります。-shell-escapeオプションを使用する必要があります。同時に、コンパイル時にPygmentsプログラムを呼び出す必要があるため、Pythonインストール環境には特定の要件があります。公式のPythonがインストールされている場合、プログラムの検索パスは通常問題ありません。ただし、一連のanacondaソフトウェアを使用していて、anacondaパスをシステムのパスに設定しない場合、Pygmentsプログラムで問題が発生する可能性があります。したがって、anacondaが提供するコマンドラインでコンパイルする必要があります。といった:

xelatex --synctex=-1 -shell-escape ega.tex

タブについて

注意が必要な場合は、異なるエディター間でテキストをコピーしているときにタブが変わる可能性があります。たとえば、notepad ++ドキュメントからwinedtにコードをコピーすると、タブが変更されます。問題を解決する方法がない場合は、タブがスペースに変換されてからコピーされると考えることができます。