特定の文書に表示されるLaTeXキーワードをリスト(最終的に計算して計算)しようとしています。デフォルトでは、LaTeXの「有効な」キーワードは次のように識別できます。
- 実際には「%」記号で始まりません(コメントアウトされているため使用されません)。
- バックスラッシュで始まります。
- Isの後には、開かれた中かっこ(またはオプションが指定されている場合は左かっこ)が続きます。
私は別の「特別な」ケースがあることを知っています。つまり、キーワードの後に何も(空白)ない、または他のキーワードがある場合があります。しかし、このような場合は、比較的まれで不正確さについては気にしません。私の主な目標は、最終的にさまざまな種類の文書に含まれるさまざまなキーワードの数に関するおおよそのアイデアを得ることです。
私はawkを使ってさまざまな方法を試しましたが、何も機能しません。参考のためにLaTeXファイルのMWE(言葉も動作しません!)を添付しました。
\documentclass[a4paper]{scrreprt} % Mode production
\usepackage[T1]{fontenc}
\renewcommand{\thechapter}{\Alph{chapter}}
\fancypagestyle{FrontPageTestReportStyle}
\fancyfoot[C]{}
\newcommand{\WaterMark}[1]{%
\begin{tikzpicture}[remember picture,overlay]
\node[rotate=60]
\end{tikzpicture}%
\begin{figure}[H]
\centering
\begin{minipage}[b]{.46\textwidth}
\centering
\includegraphics[width=#2]{#3}\caption {#4}
\end{minipage}
\caption {#3}
\end{figure}
\raggedright
\begin{tabular}{|c|cS|cS|}
\hline
\multirow{2}{*}{Part number}&\multicolumn{2}{c|}{Cavity A}&\multicolumn{2}{c|}{Cavity B}\\
\end {tabular}
\end{table}
答え1
これはソースファイルからLaTeXコマンドを分割するスクリプトです。で始まるコメントを削除します%
。すべての主要なコマンド\
とすべての環境名を出力します。
sed -e 's/^\(\(\)*\)%.*/\1/' \
-e 's/\([^\\]\(\\\\\)*\)%.*/\1/' \
-e 's/\\./\n&/g' |
sed -n -e 's/^\\begin *{\([^{}]*\)}.*/\1/p' \
-e 's/^\\end *{.*//' \
-e 's/^\(\\[@A-Za-z][@A-Za-z]*\).*/\1/p' \
-e 's/^\(\\[^@A-Za-z]\)/\1/p' |
説明する:
- 最初のパスでは、
sed
各バックスラッシュの前に改行文字を追加します。最初の2つの式からコメントが削除されます。\%
以前のコメントは保持されますが、まだ削除されます\\
。 - 2番目
sed
のステップでは、最初の式は\begin
コマンドの環境名を印刷し、2番目の式は\end
コマンドを無視します。 3番目の式は名前が文字であるコマンドを印刷し、4番目の式は名前が記号であるコマンドを印刷します。
スクリプトは縮小環境を処理しません。
答え2
これは変形のようです。この問題。
だから私はこの答えを見てみましょう:
for w in `cat test.tex`; do echo $w; done|sort|egrep '\\[a-z]*{'|uniq -c
1 A}&\multicolumn{2}{c|}{Cavity
1 \begin{figure}[H]
1 \begin{minipage}[b]{.46\textwidth}
1 \begin{tabular}{|c|cS|cS|}
1 \begin{tikzpicture}[remember
正規表現には少し作業が必要な場合がありますが、始めるのに役立ちます。