
vim(vimを使用)を使用してファイルを再インデントするのに少し問題がありますgg=G
。
大きなファイル(それほど大きくなくてもコードが400行未満の可能性がある)がある場合、Vimは一部の行を正しくインデントできないようです。なぜなら、後続の行のインデントは複数の行の上の行に依存するからです。ブロックが小さくなると、インデントは正しく行われます。
例:
\begin{itemize}
\begin{minipage} %indent +2 (after \begin{itemize})
\item %indent +1 (after \begin{minipage}) but -1 because it's \item
%some lines %indent +1
\end{minipage} %indent -1
\end{itemize} %indent -2 <--- here is the Problem, because here has to be -double indent
この場合、行に%some lines
複数の行がある場合は、\end{itemize}
2つのインデントを左に移動するのではなく(正しい)1つのインデントだけを移動します。 /
問題は、これは下のすべての行の完全なインデントがめちゃくちゃになるということです。
私が最も望む解決策は、%stopzone
構文強調表示を介して現在の(数学)領域を停止するように指示するLaTeXアノテーションのようなものがある場合です。
%indent -1
たぶん、1行のインデントを左に移動するのと同じです。
このようなものを実装する方法を知っている人はいますか?それとも、このようなものはすでに存在していますか?
それとも、Vimよりもこの種のインデントをうまく実行できる他のツールはありますか? Vimでおおよそのインデントを取得し、外部ターミナルユーティリティを使用してインデントを実際に正確にするのに十分ですか?
答え1
そのインデント用にスキャンされる行数は\begin{...}
制限されていますが、これは(残念ながら文書化されていない)グローバル変数で制御でき、g:tex_max_scan_line
デフォルトは60です。
より変数の定義indent/tex.vim
Vimランタイムが付属しています。
独自のLaTeXドキュメントに適した値にこの値を増やすことができます。たとえば、vimrcファイルに以下を追加します。
let g:tex_max_scan_line = 400
これにより制限が400行に増えますが、投稿によるとこれほど十分です。この変更はお客様の掲載結果に若干の影響を与えますが、受け入れられると期待しています。