2

そこで、emacs LaTeXモードで単語数を正しく機能させることについて質問がありました(実際にはauctexですが、気にしないでください。それから、(buffer-file-name)含まれているスペースに問題があることに気づきました。これはそれを台無しにしました。この問題も回避されました。ここで問題となるのは、スペースがない場合にソリューションが機能しなくなることです。

したがって、現在、2つのemacsコマンドがあります。

(defun latex-word-count ()
  (interactive)
  (shell-command (concat "/usr/local/bin/texcount.pl "
                         "-inc "
                     (shell-quote-argument (concat "'" (buffer-file-name) "'")))))

これは、含まれているフォルダーにスペースがある場合に機能します。

(defun latex-word-c-nospace ()
  (interactive)
  (shell-command (concat "/usr/local/bin/texcount.pl "
             "-inc "
             (shell-quote-argument (buffer-file-name)))))

これは、含まれているフォルダー名にスペースがない場合に機能します。(OKなので、インデントは少し厄介ですが、何でも)

私の質問:両方の場合に同じ機能を動作させる方法はありますか?この答えは、問題がemacsではなくtexcountにあることを示唆しています。texcount.plをいじらずにこれを行う方法はありますか?それとも、Chris JohnsenがSUで提案した方法で、texcount.plを突くのが最善の策ですか?

4

3 に答える 3

5

2番目のルーチンは、ファイル名にスペースがあるかどうかに関係なく機能するはずです。たとえば、次の小さなコマンドを作成しました。

(defun ls-l ()
  (interactive)
  (shell-command (concat "ls -l "
                         (shell-quote-argument
                          (buffer-file-name)))))

foo.txtと呼ばれるファイルを編集しているとき、およびと呼ばれるファイルを編集しているときに呼び出すと機能しますfoo bar.txt

于 2010-07-19T16:50:24.153 に答える
1

ファイル名にスペースがあるかどうかをemacsに判断させるオプションは常にあります。

(defun latex-word-count ()
  (interactive)
  (let* ((has-space (string-match " " buffer-file-name))
         (quoted-name (shell-quote-argument
                       (if has-space
                           (concat "'" buffer-file-name "'")
                         buffer-file-name))))
    (shell-command (concat "/usr/local/bin/texcount.pl "
                           "-inc "
                           quoted-name))))
于 2010-07-21T08:54:14.833 に答える
1

私はTeXcountの開発者であり、少し前にこの投稿に出くわしました。

指摘されているように、問題はTeXcountにあるため、他の解決策をハックするのではなく、TeXcountを修正するのが最善の解決策です。TeXcount Webページで、問題が解決されることを願っているアップデートを入手できます:http: //folk.uio.no/einarro/TeXcount/download.html

注意:これは新しいWebページの一時的なバージョンであり、TeXcountの新しいアドレスを決定した場合は後で移動する可能性があります。

この問題が発生したのは、Windowsでファイル名にワイルドカードを使用できるようにするために、<@ files>を使用してすべてのファイルを取得していたため、スペースが気に入らなかったためです。Linuxでは、glob(<...>)なしで@filesを使用できますが、TeXcountをWindowsでも機能させたいので、スペースをエスケープしてからglobに渡す方がよいでしょう。

これがお役に立てば幸いです。それが役に立たない場合は、私に連絡してください。私がお手伝いできるかどうかを確認します...私はここでは常連ではないので、返信として投稿された場​​合、質問に気付かない可能性があります。

エイナル

于 2010-07-23T12:16:59.620 に答える