listings環境下におけるインデント幅の変更について

listings環境下におけるインデント幅の変更について

- 内田 奏 の投稿
返信数: 2
¥lstinputlistingを用いてソースコードを貼り付ける際,インデントの幅を小さくしたいのですがどのパラメータをすれば良いでしょうか.
それっぽいパラメータだと思ったbreakindentを指定しても変化がありません...
内田 奏 への返信

Re: listings環境下におけるインデント幅の変更について

- 和田 勇 の投稿
誰も返信しないようなので。


解決されましたか?明確な回答ではありませんが、参考にしていただければ幸いです。

ご質問の内容の「インデントの幅を小さくしたい」とは、「既にスペースでイ
ンデントされた入力ソースの行頭の空白を狭くしたい」ということでしょうか?

入力ソースがタブインデントされていれば tabsize で制御できますが、スペー
スでインデントされているものだと、basewidth などを検討してみましたもの
の、全体に影響してしまい見やすさを損なう結果となってしまいました。

listings.pdf (*1) はご覧になって読まれているかと思いますが、その 15 頁
あたりに次のようなアドバイスが記されていますが、検討されましたか?

    (*1) http://www.ctan.org/tex-archive/macros/latex/contrib/listings
         http://mirrors.ctan.org/macros/latex/contrib/listings/listings.pdf
         あるいは texlive そのものがインストールされていれば
     texmf-dist/doc/latex/listings/listings.pdf

→ Some sort of advice:

(1) You should really indent lines of source code to make listings
    more readable.

(2) Don’t indent some lines with spaces and others via
    tabulators. Changing the tabulator size (of your editor or
    pretty-printing tool) completely disturbs the columns.

(3) As a consequence, never share your files with differently tab
    sized people!

もし、行頭のスペースをいくつか取り除きたいというのであれば
以下のアドバイスにあるように gobble で調整することができるかと思います。

→ To make the LATEX code more readable, I indent the environments’
    program listings. How can I remove that indention in the output?
    Read ‘How to gobble characters’ in section 9.

内田 奏 への返信

Re: listings環境下におけるインデント幅の変更について

- S T の投稿
和田さんがご指摘の通り、タブ幅はtabsizeで指定します。
\lstinputlisting[tabsize=2]{code1.R}
もし、タブではなくてスペースでインデントをしているなら、1つのアプローチとして、2つの連続したスペースを1つに読み替えるという方法もあります。これでインデント幅が半分になります。
\lstinputlisting[literate={\ \ }{{\ }}1]{code1.R}
tabsizeとliterateは同時に指定しても大丈夫ですし、\lstset{}であらかじめ設定しておいても大丈夫です。
なお、literateは{置換対象}{置換文字列}{幅}を指定します。