Tips en Trucs 2020

Hunspell spellingscontrole

Als je werkt met teksten is spellingscontrole een handig hulpmiddel. De meeste grafische programma's hebben standaard een ingebouwde spellingscontrole. In de terminal worden taken zoals het schrijven en controleren van tekst door verschillende opdrachten uitgevoerd. We gebruiken Hunspell, de opdracht die de spellingscontrole verzorgt voor o.a. LibreOffice, Mozilla Firefox, Google Chrome en buiten Linux ook voor macOS. M.a.w. het is bijna in alle distributies standaard geïnstalleerd.

Een tekst bestand of document controleren

Om het tekst bestand tekst.txt door hunspell te laten controleren, gebruik je:

dany@pindabook:~> hunspell tekst.txt
Tekstbestand controleren

LibreOffice is het eerste woord dat niet door hunspell werd herkend. Onder de tekst staat een suggestie: Zeeofficieren. En daaronder een balk met mogelijke acties. Om de betekenis van deze acties te achterhalen, druk je ?

Hunspell Help

Met een druk op de spatiebalk ga je terug naar de spellingscontrole. Met een druk op de spatiebalk laat je het woord LibreOffice ongemoeid en gaat hunspell op zoek naar een volgend probleemwoord.

Hunspell suggesties

Voor het woord Chrome heeft hunspell drie suggesties op. Door op het overeenkomstig suggestiecijfer te drukken, wordt het woord Chrome door de betreffende suggestie vervangen. Hier is echter niets fout, Chrome is een productnaam, waardoor dit niet in het hunspell Nederlands woordenboek is opgenomen. Door op i te drukken, sla je Chrome op in jouw persoonlijke woordenboek. Daardoor zal hunspell het woord Chrome in het vervolg zonder morren als correct beschouwen. En zo loop je door de ganse tekst tot deze volledig gecontroleerd is.

Het persoonlijke spellingwoordenboek wordt opgeslagen in uw Persoonlijke map (Home), is verborgen (naam begint met een punt) en eindigt met de taal (nl_NL). Dit woordenboek geef je weer met de opdracht:

dany@pindabook:~> cat .hunspell_nl_NL 
chrome
LibreOffice
macOS.

Met een klassieke teksteditor kan je daar dus woorden aan toevoegen, verwijderen en/of aanpassen. Wil je met een schone lei beginnen, verwijder dan het persoonlijke woordenboek:

dany@pindabook:~> rm .hunspell_nl_NL

Om HTML bestanden te controleren, gebruik je de -H optie:

dany@pindabook:~> hunspell -H Documenten/Web/linux/faq/tips20/hunspell.html

Om OpenDocument (ODF - Open Document Format) documenten, zoals bijvoorbeeld afkomstig van LibreOffice, te controleren, gebruik je de optie -O:

dany@pindabook:~> hunspell -O hunspell.odt

Hunspell ondersteunt nog andere standaard formaten waaronder XML en TeX/LaTeX. Bij de controle van deze formaten wordt enkel de tekst gecontroleerd en wordt dus eerst alle opmaak en andere codes weggefilterd.

De spelling van één woord controleren

Gebruik je hunspell zonder opties, dan kan je zelf tekst of woorden ter controle intypen. Na een druk op Return krijg je het resultaat te zien.

dany@pindabook:~> hunspell
Hunspell 1.6.2
onmiddelijk
& onmiddelijk 1 0: onmiddellijk

onmiddellijk
*

hfsgfhgjh
# hfsgfhgjh 0

^C

Staat er bij het resultaat een *, dan is het woord correct. Een &-teken is volgens hunspell foutief en krijg je een lijst met suggesties. Een #-teken is volgens hunspell eveneens foutief, maar kan hunspell je niet helpen met suggesties. Hunspell sluit je af met de druk op de sneltoets Ctrl+c.

Anderstalige teksten controleren

Eerst ga je na welke woordenboeken op het systeem geïnstalleerd staan.

dany@pindabook:~> hunspell -D
SEARCH PATH:
.::/usr/share/hunspell:/usr/share/myspell:/usr/share/myspell/dicts:/Library/Spelling:/home/dany/.openoffice.org/3/user/wordbook:/home/dany/.openoffice.org2/user/wordbook:/home/dany/.openoffice.org2.0/user/wordbook:/home/dany/Library/Spelling:/opt/openoffice.org/basis3.0/share/dict/ooo:/usr/lib/openoffice.org/basis3.0/share/dict/ooo:/opt/openoffice.org2.4/share/dict/ooo:/usr/lib/openoffice.org2.4/share/dict/ooo:/opt/openoffice.org2.3/share/dict/ooo:/usr/lib/openoffice.org2.3/share/dict/ooo:/opt/openoffice.org2.2/share/dict/ooo:/usr/lib/openoffice.org2.2/share/dict/ooo:/opt/openoffice.org2.1/share/dict/ooo:/usr/lib/openoffice.org2.1/share/dict/ooo:/opt/openoffice.org2.0/share/dict/ooo:/usr/lib/openoffice.org2.0/share/dict/ooo
AVAILABLE DICTIONARIES (path is not mandatory for -d option):
/usr/share/hunspell/en_US
/usr/share/hunspell/nl_NL
/usr/share/myspell/en_US
/usr/share/myspell/nl_NL
/usr/share/myspell/hyph_nl_NL
/usr/share/myspell/hyph_en_US
LOADED DICTIONARY:
/usr/share/hunspell/nl_NL.aff
/usr/share/hunspell/nl_NL.dic
Hunspell 1.6.2
^C

Daarbij toont hunspell welke mappen doorzocht worden om woordenboeken te vinden. Toont daarna de beschikbare woordenboeken en uiteindelijk de gebruikte woordenboeken. De .dic bestanden zijn klassieke woordenboeken (dictionary), de .aff bestanden bevatten regels voor vervoegingen, meervoudsvormen, enz. Merk op dat sommige woordenboeken in mappen staan met de naam myspell. Hunspell is namelijk compatibel met myspell. De mappen die beginnen met hyph bevatten woordafbrekingen. De taal van het woordenboek kan je afleiden uit vier letters, 2 voor de taal (nl), underscore, 2 voor het land (NL). De Nederlandse woordenboeken voor Vlaanderen en Nederland verschillen bijna niet, maar Engelse woordenboeken voor US of UK vertonen meer verschillen.

Om anderstalige teksten of woorden te controleren, gebruik je de optie -d:

dany@pindabook:~> hunspell -d en_US
Hunspell 1.6.2
example
*

examples
+ example

teached
& teached 8 0: teased, reached, teaches, teacher, leached, beached, teach ed, teach-ed

^C

Het +-teken bij examples duidt aan dat het om een afgeleid woord gaat (van example), m.a.w. gevonden via een .aff woordenboek.

En verder

Wil je nog meer uit hunspell halen, bekijk dan de beknopte help:

dany@pindabook:~> hunspell -h
Usage: hunspell [OPTION]... [FILE]...
Check spelling of each FILE. Without FILE, check standard input.

  -1            check only first field in lines (delimiter = tabulator)
  -a            Ispell's pipe interface
  --check-url   check URLs, e-mail addresses and directory paths
  --check-apostrophe    check Unicode typographic apostrophe
  -d d[,d2,...] use d (d2 etc.) dictionaries
  -D            show available dictionaries
  -G            print only correct words or lines
  -h, --help    display this help and exit
  -H            HTML input file format
  -i enc        input encoding
  -l            print misspelled words
  -L            print lines with misspelled words
  -m            analyze the words of the input text
  -n            nroff/troff input file format
  -O            OpenDocument (ODF or Flat ODF) input file format
  -p dict       set dict custom dictionary
  -r            warn of the potential mistakes (rare words)
  -P password   set password for encrypted dictionaries
  -s            stem the words of the input text
  -S            suffix words of the input text
  -t            TeX/LaTeX input file format
  -v, --version print version number
  -vv           print Ispell compatible version number
  -w            print misspelled words (= lines) from one word/line input.
  -X            XML input file format

Example: hunspell -d en_US file.txt    # interactive spelling
         hunspell -i utf-8 file.txt    # check UTF-8 encoded file
         hunspell -l *.odt             # print misspelled words of ODF files

         # Quick fix of ODF documents by personal dictionary creation

         # 1 Make a reduced list from misspelled and unknown words:

         hunspell -l *.odt | sort | uniq >words

         # 2 Delete misspelled words of the file by a text editor.
         # 3 Use this personal dictionary to fix the deleted words:

         hunspell -p words *.odt

Bug reports: http://hunspell.github.io/

En de uitgebreidere man-pagina:

dany@pindabook:~> man hunspell