ইমাসের মধ্যে ল্যাটেক্সের জন্য শব্দ গণনা


18

আমার লটেক্স ডকুমেন্টটিতে এটি কত শব্দ আছে তা গণনা করতে চাই। টেক্সকাউন্ট প্যাকেজের জন্য ওয়েবসাইটে গিয়ে এবং সেখানে ওয়েব ইন্টারফেস ব্যবহার করে আমি এটি করতে পারি । তবে এটি আদর্শ নয়

আমি কেবল একটি ফাইলের শব্দের সংখ্যার (বা ফাইলটিতে এবং ডকুমেন্টের মাধ্যমে \inputবা \includeডাইলেকের মধ্যে ডাকা সমস্ত ফাইলগুলিতে শব্দের আদর্শ সংখ্যার) ফিরিয়ে দেওয়ার জন্য ইমাসের মধ্যে কিছু শর্টকাট চাইতাম । আমি টেক্সকাউন্টের স্ক্রিপ্ট ডাউনলোড করেছি, তবে এটি দিয়ে কী করব তা আমি জানি না। এটি হ'ল, .plফাইলটি কোথায় রাখবেন এবং ইমাসের মধ্যে কীভাবে এটি কল করবেন তা আমি জানি না ।

এটি: আমি শেল কমান্ডের জন্য একটি কীবোর্ড শর্টকাট চাই। এবং আমি চাই যে শেল কমান্ডটি বর্তমান সক্রিয় বাফারে টেক্সকাউন্ট চালানো এবং মিনিবাফারের মোট শব্দগুলি ফিরিয়ে দেয়।

আমি উবুন্টু এবং ইমাস 22 ব্যবহার করছি, যদি এটি সাহায্য করে ...

উত্তর:


14

(defun latex-word-count ()
  (interactive)
  (shell-command (concat "/usr/local/bin/texcount.pl "
                         ; "uncomment then options go here "
                         (buffer-file-name))))

আপনি / usr / স্থানীয় / বিন ব্যতীত অন্য কোথাও টেক্সকাউন্ট.পিএল স্থাপন করতে বেছে নিতে পারেন, কোডটি যথাযথ হিসাবে সংশোধন করুন যদি আপনি তা করেন। এটি একটি নতুন কমান্ড তৈরি করেছে "এমএক্স লেটেক্স-ওয়ার্ড-কাউন্টিং", যা বর্তমান ফাইলটিতে টেক্সকাউন্ট.পিএল চালাবে (আপনি যদি ফাইলটি সংরক্ষণ না করেন তবে এটি ভুল ফলাফল দেয়)। আপনি সেমিকোলনটি সরিয়ে ফেলার টেক্সটটি যে কোনও কমান্ড লাইনের আর্গুমেন্টের সাথে ব্যবহার করতে চান, যদি কোনও হয় তবে প্রতিস্থাপন করতে পারেন। আপনি আপনার .emacs এ এরকম কিছু দিয়ে একটি কীবোর্ড কমান্ডে আবদ্ধ করতে পারেন:

(define-key latex-mode-map "\C-cw" 'latex-word-count)

টেক্সকাউন্টটি কীভাবে ইনস্টল করতে হয় সে পৃষ্ঠাটি এখানে: টেক্সকাউন্ট ফ্যাক্স । সংক্ষিপ্ত সংস্করণ:

sudo cp texcount.pl /usr/local/bin/texcount.pl
অথবা বিকল্পভাবে আপনি তাদের সুপারিশ অনুসারে করতে পারেন এবং কেবলমাত্র এটি টেক্সকাউন্টের নাম দিন এবং সঠিকভাবে কোডটি আপডেট করুন।


আপনি যদি মোট \ ইনপুট এবং files ফাইলগুলি অন্তর্ভুক্ত করতে চান তবে আপনার বিকল্পগুলিতে "ইনকাম" যুক্ত করুন।
Seamus

10

উপরের স্ক্রিপ্টটির কিছুটা সুন্দর সংস্করণ এখানে রয়েছে (ফাইলের LaTeXনামগুলিতে ফাঁকা স্থান পরিচালনা করে, এক-লাইন আউটপুট উত্পাদন করে ... ইত্যাদি) হুকগুলি অ্যাকটেক্সের জন্য।

(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)

2

সংক্ষিপ্ত সংস্করণ: M-! texcount <file.tex> RET

আমি কেবল ইমাম ব্যবহার করব shell-commandযা অন্তর্ভুক্ত

M-! <cmd> RET

একসাথে texcount(টেক্সকাউন্ট.পিএল) যা বেশিরভাগ লেটেক্স বিতরণের সাথে ইনস্টল করা আছে। আপনার দস্তাবেজটি সম্পাদনা করার সময় কেবল M-!প্রবেশ texcount <tex-file>এবং হিট রিটার্নটি হিট করুন।


1
এটি আমার পক্ষে যাওয়ার দ্রুততম উপায় ছিল। ধন্যবাদ!
জিমি ওকে

2

এখানে পোস্ট করা অন্যান্য সমাধানগুলির একটি সহজ সংমিশ্রণটি হ'ল:

(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)

2

ভবিষ্যতের রেফারেন্সের জন্য, ফাইলের নাম ফাঁকা এবং অন্য কোনও মজাদার বিন্যাস সঠিকভাবে পরিচালনা করা হবে তা নিশ্চিত করার জন্য শেল-কোট-আর্গুমেন্ট ফাংশনটি ব্যবহার করে এই উত্তরগুলির বেশ কয়েকটিটির উন্নতি করা হবে। উদাহরণস্বরূপ, প্লাগেক্সের উত্তরে উন্নতি করতে:

(defun latex-word-count ()
   (interactive)
   (shell-command (concat "texcount "
                       ; "uncomment then options go here, such as "
                       "-unicode "
                       "-inc "
                       (shell-quote-argument buffer-file-name))) 
;Now the buffer file name is sent correctly to the shell, 
;regardless of platform
)

(define-key LaTeX-mode-map "\C-cw" 'latex-word-count)

1

আপনি বিল্ট ইন ব্যবহার করতে পারেন M-x tex-count-words। একটি কীবোর্ড শর্টকাট তৈরি করতে, নিম্নলিখিতটিতে যুক্ত করুন.emacs

(add-hook 'latex-mode-hook
          (lambda () (local-set-key (kbd "C-c C-w") 'tex-count-words)))

0

আমি জানি না এটি কারও সাহায্য করবে কিনা, তবে আমি যখন আমার থিসিসটি লিখছিলাম তখন আমি দুটি জিনিস করতে চেয়েছিলাম; (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শব্দ গণনার জন্য দায়ী যে বাশ স্ক্রিপ্টের দিকে ইঙ্গিত করা ফাইলটিতে একটি স্থানীয় ভেরিয়েবল যুক্ত করে আমি তা করেছি ।

  • কাস্টম ভেরিয়েবল ঘোষণা করুন

    (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মাস্টার ফাইল থেকে অ-মন্তব্য করা অধ্যায় এবং সংযোজন এবং সেখানে শব্দগুলি গণনা করুন।

আপনি যে কাঠামোটি ব্যবহার করছেন তার সাথে মেলে তুলতে আপনি প্রতিটি প্রকল্পের রেজেক্স পরিবর্তন করতে পারেন তবে, যদি আপনি ধারাবাহিকভাবে একই কাঠামোটি ব্যবহার করেন তবে আপনি বাশের স্ক্রিপ্টটি আপনার পথে কোথাও রেখে দিতে পারেন এবং স্থানীয় একের পরিবর্তে এটি ইম্যাকগুলিতে বৈশ্বিক পরিবর্তনশীল করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.