Text-Processing

如何在源文件中列出併計算 LaTeX 關鍵字?

  • August 20, 2018

我正在嘗試列出(並最終計算和統計)出現在某些文件中的 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}

這是一個在源文件中拆分 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. 在第二sed遍中,第一個表達式從命令中列印環境名稱,\begin第二個表達式忽略\end命令。第三個表達式列印名稱為字母的命令,第四個表達式列印名稱為符號的命令。

此腳本不處理逐字環境。

引用自:https://unix.stackexchange.com/questions/39048