我在 Latex 中有一个基于代码的字数统计命令,效果很好这里。但是,我希望输出数字以逗号分隔(例如,1,000 而不是 1000)。我尝试使用\numprint
和,\siunitx
但它们会出错,大概是因为它们只能应用于数字而不能应用于命令。这是我的代码:
\documentclass{article}
\usepackage{verbatim}
\usepackage{lipsum}
\newcommand{\quickwordcount}[1]{%
\immediate\write18{texcount -0 -sum -merge -q #1.tex > #1-words.sum}%
\input{#1-words.sum}%
}
\begin{document}
There are \quickwordcount{main}words in this document.
\end{document}
当然,在这个例子中只有 6 个单词,但我不想添加 1,000 个单词只是为了显示“1000”。我如何才能显示以逗号分隔千位的输出?
答案1
我认为你应该能够使用建议的解决方案这里:
\documentclass{article}
\usepackage{siunitx}
\ExplSyntaxOn
\NewDocumentCommand { \quickwordcount } { O{} m } {
\immediate\write18{texcount ~ -0 ~ -sum ~ -merge ~ -q ~ #2.tex ~ > ~ #2-words.sum}
\file_get:nnN { #2-words.sum } { } \l_tmpa_tl
\num[#1]{ \l_tmpa_tl }
}
\ExplSyntaxOff
\begin{document}
There are \quickwordcount[group-separator={,}, group-minimum-digits=4]{main} words in this document.
\end{document}
以下解决方案也应该有效:
\documentclass{article}
\usepackage{siunitx}
\ExplSyntaxOn
\NewDocumentCommand { \quickwordcount } { O{} m } {
\immediate\write18{texcount ~ -0 ~ -sum ~ -merge ~ -q ~ #2.tex ~ > ~ #2-words.sum}
\ior_open:Nn \g_tmpa_ior { #2-words.sum }
\ior_str_get:NN \g_tmpa_ior \l_tmpa_tl
\num[#1]{ \l_tmpa_tl }
\ior_close:N \g_tmpa_ior
}
\ExplSyntaxOff
\begin{document}
There are \quickwordcount[group-separator={,}, group-minimum-digits=4]{main} words in this document.
\end{document}
请注意,您不会计算使用类似生成的单词\lipsum
,因为texcount
无法扩展 TeX 宏。