问题
我想使用 texcount 在文档中包含字数统计。但我还想包含逗号作为千位分隔符。这是我想到的代码:
\makeatletter\@@input|"echo `texcount -1 -sum=1,1,1,1,1,1,1 -merge -incbib -utf8 \jobname.tex`| sed `s/^\(.\{1\}\)/\1,/`| cut -c1-5"\makeatother
但是 sed 命令中有特殊字符:反斜杠和括号。因此 LaTeX 无法运行这行代码。
尝试的解决方案
我尝试使用 、 和 转义反斜杠和括号\textbackslash
,\{
但\}
不起作用。我还尝试用 替换\makeatletter\@@input
,\immediate\write18
但同样不起作用。
答案1
您可以使用来作为普通标点符号\@backslashchar
进行访问。\
答案2
您可以使用更高级的方法:
\documentclass{article}
\usepackage{xparse,siunitx}
\ExplSyntaxOn
\NewDocumentCommand{\countwords}{o}
{
\IfNoValueTF{#1}
{\abreu_countwords:n {\c_sys_jobname_str.tex}}
{\abreu_countwords:n {#1}}
}
\cs_new_protected:Nn \abreu_countwords:n
{
\sys_get_shell:xnN
{
texcount ~ -q ~ -1 ~ -sum=1,1,1,1,1,1,1 ~ -merge ~ -incbib ~ -utf8 ~ #1 ~ 2>/dev/null
}{}
\l_tmpa_tl
\num[group-four-digits,group-separator={,}]{\tl_use:N \l_tmpa_tl}
}
\cs_generate_variant:Nn \sys_get_shell:nnN { x }
\ExplSyntaxOff
\begin{document}
\countwords
abc def ghi klm nop abc def ghi klm nop [...long nonsense omitted...]
\end{document}
您还可以执行此操作\countwords[somefile.tex]
以获取另一个文件的计数。