リスト内のタブとスペースの違いは何ですか? 気にする必要はありますか?

リスト内のタブとスペースの違いは何ですか? 気にする必要はありますか?

これは次の質問に対するフォローアップです改行と誤った配置に関するリスト パッケージの問題環境内でコードをコピーして貼り付けると問題が発生するのはなぜですかlstlisting? リスト内のタブやスペースには注意する必要がありますか? そうである場合、それはなぜですか? タブとスペースは、パッケージでタイプセットされたソース コードの水平方向の間隔にどのように影響しますかlistings?

答え1

スペース文字(ASCIIコード32)以外にも見えない文字はあります。その1つがタブ、別名タブ文字(ASCIIコード9)は、ソースファイルの一部で使用されます。特にmakefileでよく使用されます。不可視文字全般の詳細については、ASCII 制御文字に関する Wikipedia ページ

listingsドキュメントのサブセクション 2.5 で説明されているように、パッケージはスペース文字とタブをまったく異なる方法で扱いますlistings

ソースにタブが含まれている場合、予期しない出力が得られる可能性があります。パッケージでは、タブは列 9、17、25、33 などで停止すると想定しています。これは で事前定義されていますtabsize=8。8 を数値 n に変更すると、列 n+1、2n+1、3n+1 などでタブが停止します。

驚きを避けたい場合、そしてコードがタブなしでスペースだけで済む場合は、スペースのみを使用し、タブを完全に避けることがおそらく良い考えです。

おそらく、emacs や vim などのテキスト エディターではなく、texmaker などの LaTeX IDE を使っていると思います。IDE は、Tabデフォルトでキーが押されたときにタブ文字を挿入する可能性が高いですが、代わりに固定数のスペース (通常は 2、4、または 8) を挿入するように設定する方法があるはずです。ただし、このようなオプションは遡及的ではない可能性があります。つまり、ファイルにすでに存在するタブ文字は、そのオプションを有効にするだけではスペースに置き換えられない可能性があります。タブをすべて削除するには、タブを検索してスペースに置き換える必要がある場合があります。これは間違いなくエラーが発生しやすいですが、IDE を使用している場合は、他のオプションがない可能性があります。ただし...

編集(Barbara Beeton のコメントに続く): ... emacs や vim などのエディタには、現在のバッファ内のすべてのタブを効率的にスペースに置き換える組み込み関数があります。emacs ではuntabify; があり、vim ではretab(これ)。

ここに画像の説明を入力してください

優れたテキスト エディターでは、非表示の文字 (タブ、改行など) を作成することもできます。見える, そうすれば、実際に扱っている非表示文字の種類がわかります。上の図 (vim バッファのスクリーンショット) では、記号はタブ文字を示し、¬記号は改行文字を示します。

これが、IDEを捨ててテキストエディタを使い始めるべき2つの理由です。:)

アップデート: texmaker 4.2 (2014/05/01) では、上級ユーザーはIDEの機能を拡張する内部からカスタム Javascript コードを実行します。これにより、「retab」スクリプトが可能になりますが、Javascript の知識が多少あることが前提となります。

関連情報