Tôi không biết điều này có giúp được ai không, nhưng khi tôi đang viết luận án, tôi muốn làm hai việc; (1) đếm số lượng từ cho toàn bộ luận án (thay vì một chương duy nhất) và (2) sử dụng tập lệnh truy cập tùy chỉnh. Điểm cho cái sau là nó sẽ tránh các phần như tóm tắt, khai báo, v.v. và chỉ chọn các chương liên quan.
Đếm số từ trong tệp chủ
Giải pháp ở đây rất đơn giản; Tìm hiểu xem tập tin chúng tôi đang ở là tập tin chính, nếu không, hãy gửi nó đến texcount
.
(defun latex-word-count-master ()
(interactive)
(if (eq TeX-master t)
(setq master (buffer-file-name))
(setq master (concat (expand-file-name TeX-master) ".tex")))
(shell-command (concat "texcount "
"-dir "
"-unicode "
"-inc "
master)))
Sử dụng tập lệnh tùy chỉnh
Tôi đã làm điều đó bằng cách thêm một custom-tex-counter
biến cục bộ vào tệp được bao gồm chỉ vào tập lệnh bash chịu trách nhiệm đếm từ.
Khai báo biến tùy chỉnh
(defvar custom-tex-counter nil)
(make-variable-buffer-local 'custom-tex-counter)
(put 'custom-tex-counter 'safe-local-variable #'stringp)
Thêm đường dẫn trong các biến cục bộ (cuối .tex
tệp)
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "../thesis"
%%% custom-tex-counter: "../count_words -t"
%%% End:
Đặt nó cùng với ở trên
(defun latex-word-count-alt ()
(interactive)
(if (eq TeX-master t)
(setq master (buffer-file-name))
(setq master (concat (expand-file-name TeX-master) ".tex")))
(if (not (eq custom-tex-counter nil))
(shell-command (concat custom-tex-counter
" "
master))
(shell-command (concat "texcount "
"-dir "
"-unicode "
"-inc "
master))))
Để tham khảo ở đây, kịch bản tùy chỉnh của tôi trông như thế nào (đừng quên làm cho nó có thể thực thi được):
#!/usr/bin/bash
total='false'
while getopts 't' flag; do
case "${flag}" in
t) total='true' ;;
?) printf '\nUsage: %s: [-t] \n' $0; exit 2 ;;
esac
done
shift $(($OPTIND - 1))
TOPATH=$(dirname "${1}")
CHAPTERS=$(while read -r chapter; do
printf "%s%s.tex\n" "$TOPATH" "/$chapter";
done < <(grep -Po "^[^%]\s?\\include{\K(Chapter|Appendix)[[:digit:]]+/(chapter|appendix)[[:digit:]]+" "${1}") \
| paste -sd' ')
if [ "$total" == "false" ]; then
texcount -unicode -inc $CHAPTERS
else
texcount -unicode -total -inc $CHAPTERS
fi
Về cơ bản, điều duy nhất làm điều này là grep
các chương và phụ lục không được bình luận từ tệp chính và đếm các từ ở đó.
Bạn có thể thay đổi regex cho từng dự án để phù hợp với cấu trúc bạn đang sử dụng, nhưng, nếu bạn luôn sử dụng cùng một cấu trúc, bạn có thể đặt tập lệnh bash ở đâu đó trong đường dẫn của mình và biến nó thành biến toàn cục trong emacs thay vì cục bộ.