web-dev-qa-db-ja.com

LaTex / LyXへのプログラミングコードの追加

たぶん私はただ太っているだけですが、すべてのインデント情報(Pythonにとって重要なもの)を失うことなく、(python)コードをラテックスに単純に貼り付けるための賢明な方法を見つけることができません。

誰かが何か明るいアイデアを持っていますか?構文の強調表示については心配していません。私が欲しいのはタブキーを戻すことだけです!

10
Andrew Bolster

このための私のお気に入りの環境 minted 。私はそれを使用して、次のようなソースファイル全体を入力します。

\inputminted[linenos,fontsize=\scriptsize]{python}{script.py}

ファイルを入力せずに使用することもできます。さらに重要なのは、貼り付けた後のインデントgobblesの量を定義することです。

\newminted{python}{gobble=4,linenos,fontsize=\scriptsize}
\begin{pythoncode}
    print('I am a Python script')
\end{pythoncode}

そうすれば、LaTeXはまだうまくインデントされていますが、逐語的なコードはそうではありません。これにより、シンタックスハイライトも提供されます。これは、興味がないとおっしゃっていたことです。言語を定義しないでください。

13
fideli

逐語的な環境を使用することをお勧めします: http://web.mit.edu/vogt/www/latex/ltx-79.html

貼り付けた直後に問題が発生する場合は、IDEを使用してドキュメントを作成していますか?geditやメモ帳などのプレーンテキストエディタでファイルを開いてみてください。

4
oadams

Fideliが示唆しているように、私はmintedを使用しますが、問題の純粋なラテックスソリューションである listingsパッケージ に注意することをお勧めします。

mintedは、Pythonで記述されたソース蛍光ペンである Pygments から派生しています。 mintedは、\write18に基づいてラテックスブリッジと連携し、 texmentsパッケージ はPygmentsに1つ提供します。私が知っているPygmentsと比較して、mintedにマイナス面はありません。おそらく2つはある時点でマージされるでしょう。

2
Charles Stewart

リストパッケージを使用するには、パッケージを含め、必要な言語を前文にロードする必要があります。

_\usepackage{listings}
\lstloadlanguages{Python}
_

ドキュメント内にいくつかのオプションを設定します。

_\lstset{language=Python,tabsize=2}
_

...次に、スニペットをインラインで指定できます。

_\begin{lstlisting}
  print ("Hello, World!")
\end{lstlisting}
_

...またはファイルからそれらを読み取ります:

_\lstinputlisting[firstline=10,lastline=20]{Hello.py}
_

...またはコードをインラインで記述します:\lstinline!print ("Hello, World!")!

1
RolKau

LyXについては、 this (「リスト」形式を使用して子ドキュメントをインポートします)を参照してください。

1
Sparkler