ソースファイルでLaTeXキーワードを一覧表示して計算する方法は?

ソースファイルでLaTeXキーワードを一覧表示して計算する方法は?

特定の文書に表示されるLaTeXキーワードをリスト(最終的に計算して計算)しようとしています。デフォルトでは、LaTeXの「有効な」キーワードは次のように識別できます。

  1. 実際には「%」記号で始まりません(コメントアウトされているため使用されません)。
  2. バックスラッシュで始まります。
  3. 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' |

説明する:

  1. 最初のパスでは、sed各バックスラッシュの前に改行文字を追加します。最初の2つの式からコメントが削除されます。\%以前のコメントは保持されますが、まだ削除されます\\
  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

正規表現には少し作業が必要な場合がありますが、始めるのに役立ちます。

関連情報