이것이 누군가에게 도움이 될지 모르겠지만 논문을 쓸 때 두 가지 일을하고 싶었습니다. (1) 한 장이 아닌 전체 논문의 단어 수를 세고 (2) 사용자 정의 카운터 스크립트를 사용하십시오. 후자의 요점은 초록, 선언 등의 섹션을 피하고 관련 장만 선택한다는 것입니다.
마스터 파일에서 단어 개수
여기서 해결책은 간단했습니다. 우리가있는 파일이 마스터 파일인지 확인하십시오 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)))
맞춤 스크립트 사용
custom-tex-counter
단어 계산을 담당하는 bash 스크립트를 가리키는 포함 된 파일에 로컬 변수를 추가하여 그렇게했습니다 .
맞춤 변수 선언
(defvar custom-tex-counter nil)
(make-variable-buffer-local 'custom-tex-counter)
(put 'custom-tex-counter 'safe-local-variable #'stringp)
로컬 변수 ( .tex
파일 끝)에 경로를 추가하십시오.
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "../thesis"
%%% custom-tex-counter: "../count_words -t"
%%% End:
위와 함께 넣어
(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))))
참고로 내 사용자 정의 스크립트는 다음과 같습니다 (실행 파일로 만드는 것을 잊지 마십시오).
#!/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
기본적으로이 작업은 grep
마스터 파일에서 주석 처리되지 않은 챕터 및 부록에 대한 유일한 내용 이며 해당 단어를 계산합니다.
사용하는 구조와 일치하도록 각 프로젝트의 정규식을 변경할 수 있지만, 동일한 구조를 일관되게 사용하는 경우 bash 스크립트를 경로 어딘가에 놓고 로컬 변수 대신 emacs의 전역 변수로 만들 수 있습니다.