lstlistingでlanguageオプションを指定すると日本語でエラーになる

lstlistingでlanguageオプションを指定すると日本語でエラーになる

- 光田 エディー の投稿
返信数: 2
いま、プログラム言語についてのマニュアルを作っている者です。 lstlistingでプログラムコードを記述していますが、 \begin{lstlisting} ...プログラムコード... \end{lstlisting} だとうまく行くのですが、これに[language=Python]の言語をオプションで指定すると、日本語のところでエラーになります。日本語がなければ、エラーにはなりませんが、期待されたような強調構文になりません。 これは、私がLuaLaTeXでコンパイルする時に遭遇するエラーで、 pLaTeXでコンパイルすると、日本語もうまく通りますし、構文も強調されます。 他のパッケージの関係で、LuaLaTeXを使いたいのですが、LuaLaTeXを使いながら、 lstlistingでオプションに[language=Python]を指定して、しかも日本語が正しく表示されるようにするには、何か回避策がありますでしょうか? どうぞよろしくお願い致します。
光田 エディー への返信

Re: lstlistingでlanguageオプションを指定すると日本語でエラーになる

- 和田 勇 の投稿

エラーになるソースをアップしていただいた方が、レスポンスは速いと思います。

サンプルソースを作成してみましたので、試行された結果を教えてください。

    \documentclass{jlreq}

    %\usepackage{listings, jlisting}% lltjp-listings 以外の時のテストのため
    %\usepackage{color}

    %\usepackage{luatexja-preset  } %
    \usepackage{lltjp-listings}

    \begin{document}

    \begin{lstlisting}[caption = キャプション1 , label = program1, language=Python]
    #!/usr/bin/env python

    # -*- coding: utf-8 -*-
    import codecs
    import re
    import sys

    from openpyxl import Workbook, load_workbook

    def main() :
        fp = sys.argv[1]

        wb = load_workbook(filename=fp, read_only=True, keep_vba=True)
        for sheet in wb :
            # print(sheet.title)
            rownbr = 0
            for row in sheet.values :
                rownbr += 1
                print("日本")

    if __name__ == "__main__" :
            main()
    \end{lstlisting}
    \end{document}
和田 勇 への返信

Re: lstlistingでlanguageオプションを指定すると日本語でエラーになる

- 光田 エディー の投稿
和田さま

サンプルコードまで作って試していただき、ありがとうございます。
和田さんのサンプルコードを実行しましたら、私の環境でもうまく行きました。

いろいろ調べましたら、\lstsetでオプションを設定しているところで、
commentstyle={\smallitshape}
がどうやらエラーの原因になっているらしく、それをコメントアウトしたら、
languageの設定がうまく行くようになりました。

\lstset{
basicstyle={\ttfamily},
identifierstyle={\small},
% commentstyle={\smallitshape},
keywordstyle={\small\bfseries},
ndkeywordstyle={\small},
stringstyle={\small\ttfamily},
frame={tb},
breaklines=true,
upquote=true,
columns=[l]{fullflexible},
numbers=none, %% left
xrightmargin=0ex,
xleftmargin=3ex,
numberstyle={\scriptsize},
stepnumber=1,
numbersep=1ex,
lineskip=-0.5ex
}

どうもありがとうございました。