여러 사전으로 맞춤법 검사


14

Emacs 맞춤법 검사기로 여러 사전을 사용하려면 어떻게해야합니까? 특히 영국 영어 사전과 의학 영어 사전을 동시에 사용하고 싶습니다.


사용하고 flyspell있습니까?
PythonNut

예, 사용하고 flyspell있습니다.
Divinenephron

솔루션은 사용할 수 flyspell있지만 반드시 그런 것은 아닙니다. 그렇게하면 답변이 더 많은 사람들과 관련 될 수 있습니다.
Divinenephron

답변:


16

Hunspell 은 여러 사전을 사용하여 맞춤법 검사를 수행 할 수 있으며 Emacs에서 작동하도록이를 구성 할 수 있습니다. 이것이 Emacs 25.0과 함께 OS X 10.11에서 수행하는 방법입니다. 이전 Emacsen에서는 작동하지 않습니다.

Hunspell 설치

brew install hunspell

LibreOfficeOpenMedSpel 에서 Hunspell 사전을 다운로드 하십시오 .

cd ~/Downloads/

curl http://extensions.libreoffice.org/extension-center/english-dictionaries/releases/2016.04.01/dict-en.oxt > dict-en.oxt
unzip dict-en.oxt en_GB.aff en_GB.dic

curl -L https://addons.mozilla.org/en-US/firefox/downloads/latest/6526/addon-6526-latest.xpi > openmedspel.xpi
unzip openmedspel.xpi dictionaries/OpenMedSpel.{aff,dic}
mv dictionaries/OpenMedSpel.dic en_US-med.dic
mv dictionaries/OpenMedSpel.aff en_US-med.aff

에 사전을 넣습니다 ~/Library/Spelling/.

mv *.aff *.dic ~/Library/Spelling/

이것을 다음에 추가하십시오 ~/.emacs/init.el:

(with-eval-after-load "ispell"
  (setq ispell-program-name "hunspell")
  (setq ispell-dictionary "en_GB,en_US-med")
  ;; ispell-set-spellchecker-params has to be called
  ;; before ispell-hunspell-add-multi-dic will work
  (ispell-set-spellchecker-params)
  (ispell-hunspell-add-multi-dic "en_GB,en_US-med"))

이 기능 ispell-hunspell-add-multi-dicispell.elEmacs 24.5의 이전 버전 에서도 존재하지 않는 것 같습니다 . github.com/emacs-mirror/emacs/blob/master/lisp/textmodes/… 에서 최신 파일을 다운로드하고 다시 컴파일하여 작동하도록했습니다.
xji

Emacs 25.0을 사용하고 있습니다. Emacs> = 25.0에서만 작동하는 것에 대한 메모를 추가했습니다.
Divinenephron

Emacs 25를 설치했습니다. 그러나 이상하게도 다음과 같은 오류가 발생했습니다. Symbol’s function definition is void: ispell-hunspell-add-multi-dic, 확실하지만 /usr/share/emacs/25.1.50/lisp/textmodes/ispell.elc기능이 존재합니다. 어떻게 된 일인지 아십니까? 감사.
xji

나는 내을 깨달았다 ispell.el/usr/share/emacs/site-lisp/새로운 그림자 ispell.el보기 ... Emacs25의를 unix.stackexchange.com/questions/28483/... 같은 문제가 발생할 수 있습니다 사람을 위해.
xji

2

en_US-med.dic 및 en_US-med.aff를 이미 다운로드하여 hunspell을 설치했다고 가정하십시오.

단계 1, hunspell -D쉘 에서 실행 하면 hunspell이 사전을 검색하는 디렉토리를 알려주고 en_US-med.dic 및 en_US-med.aff를 해당 디렉토리로 복사합니다.

2 단계, 아래 코드를 ~ / .emacs에 삽입하십시오.

(setq ispell-program-name "hunspell")
;; you could set `ispell-dictionary` instead but `ispell-local-dictionary' has higher priority
(setq ispell-local-dictionary "en_US")
(setq ispell-local-dictionary-alist '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US,en_US-med") nil utf-8)))

실제로 "-d en_US, en_US-med"옵션을 hunspell CLI에 전달하여 두 사전 "en_US"및 "en_US-med" 를 동시에 사용할 수 있습니다.

"-d"옵션은 hunspell 매뉴얼 ( man hunspell쉘)에 설명되어 있습니다.

다음은 hunspell 매뉴얼에서 인용 한 텍스트입니다.

-d en_US,en_geo,en_med,de_DE,de_med

       en_US  and  de_DE  are  base dictionaries, they consist of aff and dic
       file pairs: en_US.aff, en_US.dic and  de_DE.aff,  de_DE.dic.   En_geo,
       en_med,  de_med  are  special dictionaries: dictionaries without affix
       file. Special dictionaries are optional extension of the base  dictio‐
       naries  usually  with  special (medical, law etc.)  terms. There is no
       naming convention for special dictionaries, only the ".dic" extension:
       dictionaries  without affix file will be an extension of the preceding
       base dictionary (right order of the parameter list needs for good sug‐
       gestions). First item of -d parameter list must be a base dictionary.

Emacs 24.3, Debian 7에서 "fibrochondritis"라는 단어로 테스트했습니다.

모든 OS에서 Emacs 23+에서 작동 해야 합니다 .

Windows에서 hunspell 실행 파일에 사전 검색 경로를 알려주는 가장 쉬운 방법은 환경 변수를 설정하는 것입니다 DICTPATH(hunspell 설명서에 설명되어 있음). 그것은 매우 가능성이 Cygwin에서 / MSYS2에서 hunspell 실행 파일은 UNIX 형식으로 경로를 인식합니다 .


이 방법을 사용하면 여러 사전 을 사용할 수 없습니다 .
Divinenephron

내가 준 코드는 IS 사전입니다.
chen bin

이 점을 지적 해 주셔서 감사합니다 -d. 옵션을 눈치 채지 못했습니다 .
Divinenephron

글쎄, 이것은 어떤 이유로 작동하지 않는 것 같습니다. 명령 줄에서 -d 옵션을 사용하면 작동하지만 Emacs에서는 helm-flyspell시스템 언어로 사전을 사용하는 것 같습니다.
xji

투구-비행 주문은 aspell을 사용할 수 있습니다.
chen bin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.