Text-Processing
如何在源文件中列出併計算 LaTeX 關鍵字?
我正在嘗試列出(並最終計算和統計)出現在某些文件中的 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}
這是一個在源文件中拆分 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
在每個反斜杠之前添加一個換行符。前兩個表達式去除註釋,注意保留\%
但仍去除前面的註釋\\
。- 在第二
sed
遍中,第一個表達式從命令中列印環境名稱,\begin
第二個表達式忽略\end
命令。第三個表達式列印名稱為字母的命令,第四個表達式列印名稱為符號的命令。此腳本不處理逐字環境。