我想计算我的 LaTeX 文档中有多少个单词。我可以通过访问文本计数包并使用那里的网络界面。但这并不理想。
我更希望在 emacs 中使用一些快捷方式来返回文件中的单词数(或者理想情况下是文件中的单词数以及文档调用\input
或\include
文档内的所有文件中的单词数)。我已经下载了 texcount 脚本,但我不知道该怎么用它。也就是说,我不知道将文件放在哪里.pl
,以及如何在 emacs 中调用它。
即:我想要一个 shell 命令的键盘快捷键。并且我希望该 shell 命令在当前活动缓冲区上运行 texcount 并返回迷你缓冲区中的单词总数。
我正在使用 Ubuntu 和 emacs22,如果有帮助的话......
答案1
(defun latex-word-count ()
(interactive)
(shell-command (concat "/usr/local/bin/texcount.pl "
; "uncomment then options go here "
(buffer-file-name))))
您可以选择将 texcount.pl 放在 /usr/local/bin 以外的某个位置,如果这样做,只需根据需要修改代码即可。这将创建一个新命令“Mx latex-word-count”,它将在当前文件上运行 texcount.pl(但是,如果您没有保存文件,它将给出错误的结果)。您可以删除分号,并用您想要使用的任何命令行参数(如果有)替换填充文本。您可以在 .emacs 中使用类似以下内容将其绑定到键盘命令:
(define-key latex-mode-map "\C-cw" 'latex-word-count)
描述如何安装 texcount 的页面在这里:texcount 常见问题。 简洁版本:
sudo cp texcount.pl /usr/local/bin/texcount.pl
或者您可以按照他们的建议去做,简单地将其命名为 texcount,然后适当地更新代码。
答案2
这是上述脚本的一个稍微好一点的版本(处理文件名中的空格、生成单行输出等...)钩子LaTeX
用于 AuCTeX。
(defun my-latex-setup ()
(defun latex-word-count ()
(interactive)
(let* ((this-file (buffer-file-name))
(word-count
(with-output-to-string
(with-current-buffer standard-output
(call-process "texcount" nil t nil "-brief" this-file)))))
(string-match "\n$" word-count)
(message (replace-match "" nil nil word-count))))
(define-key LaTeX-mode-map "\C-cw" 'latex-word-count))
(add-hook 'LaTeX-mode-hook 'my-latex-setup t)
答案3
简洁版本:M-! texcount <file.tex> RET
我只想使用包含shell-command
的emacs
M-! <cmd> RET
连同texcount
大多数 latex 发行版中安装的 (texcount.pl)。编辑文档时,只需按M-!
Entertexcount <tex-file>
并按 Return 即可。
答案4
这里发布的其他解决方案的简单组合是:
(defun latex-word-count ()
(interactive)
(shell-command (concat "texcount " ; my latex installation includes texcount.pl
; "uncomment then options go here, such as "
"-unicode "
"-inc "
(buffer-file-name))) ; better than typing path to current file
)
(define-key LaTeX-mode-map "\C-cw" 'latex-word-count)