Latex [オプション] パッケージのペア形式を \usepackage[オプション]{パッケージ}として指定

Latex [オプション] パッケージのペア形式を \usepackage[オプション]{パッケージ}として指定

現在よく使用されているデフォルトのLaTeXパッケージセットは、次の形式になっています。

package1
[options]package2
[options]package3
package4
...

パッケージに追加のオプションがあるかどうかに応じて、これを \usepackage[options]{package} または \usepackage{package} の標準 LaTeX 表記法に変換できるようにしたいです。オプションの行を変換するためにsed / regexコマンドを正常に作成しましたが、オプションのないパッケージがありません。

echo "[option]package" | sed 's/.*\(\[[^]]*\]\)\(.*\)/\\usepackage\1{\2}/'
>> \usepackage[option]{package}

パッケージが1つしかない行で実行すると、期待どおりに失敗します。

echo "package" | sed 's/.*\(\[[^]]*\]\)\(.*\)/\\usepackage\1{\2}/'
>> package

正規表現の問題ですか?では、どのように処理する必要がありますか?

ベストアンサー1

これがあなたに適していることを確認してください:

$ echo -e "[options]package3\npackage4" | sed 's/^\(\[[^]]*\]\)\?\(.*\)/\\usepackage\1{\2}/'
\usepackage[options]{package3}
\usepackage{package4}

行の先頭に一致する.*ように置き換え、角かっこをオプションにするために追加しました。^\?

おすすめ記事