sedでファイル内のvisibleとinvisibleを切り替え

TeXのtcolorboxで解答を埋め込むプリントを作ったとき、ファイルの数が多くなると手作業でまとめて解答ファイルを作るのは手間。1個1個エディタで開いてinvisibleをvisibleに書き換えるのは人間的な作業ではない。

それが嫌で、解答ファイルをコンパイルする作業を先送りにする癖があって困っていた。しかし、この程度のことならsedで終わることに気づいた。

まず、マクロでvisibleのパラメーターを切り替えられるようにしておく。

\newcommand{\visible}{invisible}
\tcbset{いろいろ, \visible}

\tcbsetの中にvisibleを直接書かないのは、置換したときの意図しない挙動を防ぐため。

\tcbset{いろいろ,invisible}

とすると、どこかのファイルにinvisibleがある状態でvisibleをinvisibleに置換すると

  • visible -> invisible
  • invisible -> ininvisible

となって面倒になる。マクロで{visible}とか{invisible}とし、{}ごと検索にひっかければ、invisible中のvisibleにヒットすることはなくなる。

さて、他の部分に{invisible}などの記述はないものとする(あるならば、以下の置換の部分をrenewcommandから書いてやれば良い。)。

同一ディレクトリ中に、visibleをinvisibleに書き換えたいファイルのみを全部突っ込んでおいて、次のようにする。

 ls *.tex | xargs  gsed -i  's/{invisible}/{visible}/g'

(ファイルの上書き注意)

gsedでないと(macの場合)、-iが無いらしいのでgsedを(brewで入れて)使う。lsの検索条件も場合場合で適当に書き換えて使う。

あとは、ダブルクリックでTeXShopコンパイル。エディタで手で書き換えることに比べれば大した手間ではない。

ちまちまコンパイルするのが面倒なら

 ls *.tex | xargs ptex2pdf -u -l

とかで一括でコンパイルできるはず。