如何在源文件中列出并统计 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. 在第二sed遍中,第一个表达式打印\begin命令中的环境名称,第二个表达式忽略\end命令。第三个表达式打印名称为字母的命令,第四个表达式打印名称为符号的命令。

该脚本不处理逐字环境。

答案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

正则表达式可能需要一些工作,但这应该可以帮助您入门。

相关内容