Closed1

tcblisting環境でlatexindentがフォーマットしないようにする

yano404yano404

VSCodeのLaTeX Workshopで自動フォーマット(latexindentを使用)を有効にしていると, tcblisting のようにフォーマットして欲しくない環境内部でもフォーマットされてしまう:

\begin{tcblisting}{
    title=Deserialization,
    listing only,
    listing options={
        language=C,
        basicstyle=\ttfamily,
        keywordstyle=\color{blue}\ttfamily,
        stringstyle=\color{red}\ttfamily,
        commentstyle=\color{green}\ttfamily,
        morecomment={[l][\color{magenta}]{\#}},
      }
  }
#include<stdio.h>

int main(int argc, char **argv){
    printf("Hello World!\n");
    return 0;
  }
\end{tcblisting}

これをなんとかしたい.

$ readlink `which latexindent`
../../texmf-dist/scripts/latexindent/latexindent.pl

などで, latexindent がある場所を探す.
latexindent.pl と同じ場所に defaultSettings.yaml があるはずなので, これを編集する.

verbatimEnvironments という項目があるはずなので, これに tcblisting を追加する.

defaultSettings.yml
verbatimEnvironments:
    verbatim: 1
    lstlisting: 1
    minted: 1
    tcblisting: 1 # <-追加

これで tcblisting 環境内ではフォーマットされなくなる.

\begin{tcblisting}{
    title=Deserialization,
    listing only,
    listing options={
        language=C,
        basicstyle=\ttfamily,
        keywordstyle=\color{blue}\ttfamily,
        stringstyle=\color{red}\ttfamily,
        commentstyle=\color{green}\ttfamily,
        morecomment={[l][\color{magenta}]{\#}},
      }
  }
#include<stdio.h>

int main(int argc, char **argv){
  printf("Hello World!\n");
  return 0;
}
\end{tcblisting}
このスクラップは2022/04/30にクローズされました