#LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \begin_preamble \usepackage[T1]{fontenc} \usepackage{xspace} \newcommand{\nach}{$\to$\xspace} \newcommand{\hoch}{\texttt{$^\wedge$}} \usepackage{html} \newcommand{\doubledash}{-\hspace{0.1em}-} \newcommand{\doubledashb}{-\/-} \newcommand{\dlt}{{\footnotesize$\ll$}} \newcommand{\dgt}{{\footnotesize$\gg$}} \begin{htmlonly} \renewenvironment{lyxcode} {\begin{list}{}{ \setlength{\rightmargin}{\leftmargin} \raggedright \setlength{\itemsep}{0pt} \setlength{\parsep}{0pt} \ttfamily}% \item[] \begin{ttfamily}} {\end{ttfamily} \end{list} } \newenvironment{LyXParagraphIndent}[1]% {\begin{quote}} {\end{quote}} \renewcommand{\LyX}{LyX} \renewcommand{\doubledash}{\rawhtml --\endrawhtml} \renewcommand{\doubledashb}{\rawhtml --\endrawhtml} \renewcommand{\dlt}{«} \renewcommand{\dgt}{»} \renewcommand{\nach}{\rawhtml to \endrawhtml} \renewcommand{\hoch}{\rawhtml ^\endrawhtml} \end{htmlonly} \end_preamble \language english \inputencoding latin1 \fontscheme default \graphics default \paperfontsize 11 \spacing single \papersize letterpaper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \paperorientation portrait \leftmargin 1in \topmargin 1in \rightmargin 1in \bottommargin 1in \secnumdepth 3 \tocdepth 2 \paragraph_separation skip \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title Aspell .33.7.1 alpha \size larger \newline \series bold \size large A More Intelligent Ispell \layout Author Kevin Atkinson \newline kevina at users sourceforge net \layout Standard \begin_inset LatexCommand \tableofcontents{} \end_inset \layout Chapter Introduction \layout Standard Aspell is an Open Source spell checker designed to eventually replace Ispell. Its main feature is that it does a much better job of coming up with possible suggestions than Ispell does. In fact recent tests shows that it even does better than Microsoft Word 97's spell checker in some cases. In addition it has both compile time and run time support for other non-English languages. Aspell is also a library however the recommend way to use aspell is through the Pspell library as the actual interface to the aspell library is constantly changing. \layout Section The Future of Aspell \begin_inset LatexCommand \label{future} \end_inset \layout Standard Aspell .33.7 is most likely going to be the last official version of Aspell as in the near future Aspell is going to be merged into Pspell: \layout Standard \series bold \size large From: \series default Kevin Atkinson \newline \series bold To: \series default aspell-announce, pspell-announce \newline \series bold Date: \series default 08/01/2001 \newline \series bold Subject: \series default Aspell and Pspell will be merged. \layout Standard In the near future Aspell is going to be merged into Pspell. This will happen with the next major release of Pspell. If everything goes as planed, in the next major version of Pspell: \layout Itemize Aspell will be included as part of Pspell as a module \layout Itemize The Ispell module will also be included \layout Itemize Most of the functionally of the Aspell command will be replaced with a new Pspell command which will work for any spell checker \layout Itemize The English dictionary will no longer be included with Aspell. Instead it will be part of the Aspell-dicts package \layout Itemize The manuals will be switched over from LyX/LaTeX to LyX/DocBook so that in can easily be converted to other formats such as info and man. \layout Itemize The current C++ interface may disappear and be replaced with a nicer C++ interface which will act as a wrapper for the C interface as I discussed earlier. If you are currently using the C++ interface and this will create a major problem for you please let me know. \layout Standard This will require major reorganization of just about anything associated with Aspell and Pspell which will probably require packagers to redo there packaging scheme for Aspell and Pspell as some libraries and data files will disappear, other will be created, and the location of some of the data files will be moved. Also, as mentioned above Aspell, as you know it know, is going to disappear and be replaced with a generic utility. Some Aspell specific things, such as creating dictionaries, will remain in the Aspell utility however the executable will be renamed to aspell-util to avoid any confusion. \layout Standard Also, the Aspell sourceforge project might disappear, however I am not sure about this. At very least the Aspell mailing lists and bug tracker will disappear to avoid confusion on where question and bug reports should be posted. \layout Standard All of this \emph on should \emph default happen around the end of August. \layout Section Comparison to other spell checker engines \layout Standard \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \begin_inset Tabular \begin_inset Text \layout Standard \end_inset \begin_inset Text \layout Standard Aspell \end_inset \begin_inset Text \layout Standard Ispell \end_inset \begin_inset Text \layout Standard Netscape 4.0 \end_inset \begin_inset Text \layout Standard Microsoft Word 97 \end_inset \begin_inset Text \layout Standard Open Source \end_inset \begin_inset Text \layout Standard x \end_inset \begin_inset Text \layout Standard x \end_inset \begin_inset Text \layout Standard \end_inset \begin_inset Text \layout Standard \end_inset \begin_inset Text \layout Standard Suggestion Intelligence \end_inset \begin_inset Text \layout Standard 88-98 \end_inset \begin_inset Text \layout Standard 54 \end_inset \begin_inset Text \layout Standard 55-70? \end_inset \begin_inset Text \layout Standard 71 \end_inset \begin_inset Text \layout Standard Personal part of Suggestions \end_inset \begin_inset Text \layout Standard x \end_inset \begin_inset Text \layout Standard x \end_inset \begin_inset Text \layout Standard x \end_inset \begin_inset Text \layout Standard \end_inset \begin_inset Text \layout Standard Alternate Dictionaries \end_inset \begin_inset Text \layout Standard x \end_inset \begin_inset Text \layout Standard x \end_inset \begin_inset Text \layout Standard ? \end_inset \begin_inset Text \layout Standard ? \end_inset \begin_inset Text \layout Standard International Support \end_inset \begin_inset Text \layout Standard x \end_inset \begin_inset Text \layout Standard x \end_inset \begin_inset Text \layout Standard ? \end_inset \begin_inset Text \layout Standard ? \end_inset \end_inset \layout Standard The suggestion Intelligence is based on a small test kernel of misspelled/correc t word pairs. Go to \begin_inset LatexCommand \url{http://aspell.sourceforge.net/test} \end_inset for more info and how you can help contribute to the test kernel. The current scores for aspell are 88 in \series bold fast \series default mode, 93 in \series bold normal \series default mode, and 98 in \series bold bad spellers \series default mode see section \begin_inset LatexCommand \ref{suggestion} \end_inset for more information about the various suggestion modes. \layout Standard If you have any other information you would like to add to this chart please contact me at kevina at users sourceforge net. \layout Subsection Comparison to Ispell \layout Subsubsection Features that only Aspell has \layout Itemize Does a much better job with coming up with suggestions than Ispell does or for that matter any other spell checker I have seen. If you know a spell checker that does a better job please let me know. \layout Itemize Can learn from users misspellings. \layout Itemize Is an actual library that others programs can link to instead of having to use it through a pipe. \layout Itemize Is multiprocess intelligent. When a personal dictionary (or replacement list) is saved it will now first update the list against the dictionary on disk in case another process modified it. \layout Itemize Can share the memory used in the main word list between processes. \layout Itemize Support for detachable dictionaries \series bold \series default so that more than one aspell class can use the same dictionary. \layout Itemize Support for multiple personal dictionaries as well as support for special auxiliary dictionaries. \layout Itemize Better support for run-together words. \layout Itemize Ability to use multiple dictionaries by simply specifying it on the command line or in the configuration files. \layout Subsubsection Things that, currently, only Ispell have \layout Itemize Lower memory footprint \layout Itemize Support for affix compression \layout Itemize Perhaps better support for spell checking (La)TeX files. \layout Itemize Support for spell checking Nroff files. \layout Chapter Getting Started \layout Section Requirements \begin_inset LatexCommand \label{reqs} \end_inset \layout Standard Aspell requires gcc 2.95 (or better) as the C++ compiler. Other C++ compilers should work with some effort. Other C++ compilers for mostly POSIX compliant (Unix, Linux, BeOS, CygWin) systems should work with out any major problems provided that the compile can handle all of the advanced C++ features Aspell uses. C++ compilers for non-Unix systems might work but it will take some work. Aspell at very least requires a Unix-like environment (sh, grep, sed, tr, etc...) in order to build. Aspell also uses a few POSIX functions when necessary. Nevertheless, Aspell will compile and run using the MinGW version of gcc provided that the CygWin environment is used to to build it. \layout Standard \series bold Aspell also requires the Portable Spell Checker Interface Library \series default , otherwise known as Pspell, to be installed on your system, in the same location as Aspell will be installed in, before it will compile. Aspell requires version .12.2 or better. You can obtain the latest version of Pspell from \begin_inset LatexCommand \url{http://pspell.sourceforge.net/} \end_inset \layout Section Obtaining \layout Standard The latest version can always be found at Aspell's home page at \begin_inset LatexCommand \url{http://aspell.sourceforge.net} \end_inset . \layout Section Support \layout Standard Support for Aspell can be found on the Aspell mailing lists. Instructions for joining the various mailing lists (and an archive of them) can be found off the Aspell home page at \begin_inset LatexCommand \url{http://aspell.sourceforge.net} \end_inset . Please use aspell-help for problems compiling and installing aspell, and aspell-user for general questions. \layout Section Helping Out \layout Standard The easiest thing you can do to help out it is too send me your \series bold .aspell.<>.prepl \series default file located in your home directory every so often. (Email kevina at users sourceforge net) The file contains data on which word pairs aspell is unable to come up with the proper suggestion. If the file does not exist is simply means that you were only using aspell in a program such as emacs which does not communicate the replacement pairs back to aspell. Sending me the file would help me improve aspell accuracy as right now I don't have very much real data to work with. \layout Standard If you are a good programmer and really want to help me consider doing one of the tasks listed in a recent post: \layout Standard \series bold \size large From \series default : Kevin Atkinson \newline \series bold Date \series default : 07/18/2001 \newline \series bold Subject \series default : Serious Help Needed for Aspell and Pspell \layout Standard In the past I have asked for help, but in specific areas and not very forcefully. Well, now I \emph on really \emph default would appreciate some help with developing Aspell and Pspell. I would like for Aspell to go to beta by the end of this summer but I really don't see that happening unless I get some help. \layout Standard Some of the areas I could use assistance in: \layout Itemize Adding Affix compression support for Aspell \layout Itemize Adding gettext support to Aspell and Pspell \layout Itemize Making Aspell and Pspell thread safe \layout Standard And lots of other smaller areas. I am looking for people who are competent programmers and have some experience with C++. I am also looking for people which have a good deal of shell programming, Perl, and autotools experience to help me clean up my build system. \layout Standard Some areas such as thread safety will simply not happen until I get some help because I really do not know enough about it. \layout Standard I hate to whine. However, I have put an extremely large about of unpaid time into Aspell and would appreciate some giving back from those who use Aspell in there distribution or have used the Pspell library as part of there applications, especially with those with the resources to do so such as Open Source companies. \layout Standard I release that my code, especially Aspell's, can be a bit scary with all the complex C++, however I will be glade to help any one with this part and for most of the tasks I need help with, one really don't even need to know C++ that well. Here is a breakdown of the tasks I would like help with and the skills required. \layout Standard \series bold \shape italic Task \series default : Adding Affix compression support for Aspell \layout Standard \series bold Skills \series default : Competent programmer with some C++ knowledge. I know exactly what needs to be done in this area so it will require very little knowledge of how Aspell works. \layout Standard \series bold \shape italic Task \series default : Adding gettext support to Aspell and Pspell \layout Standard \series bold Skills \series default : Competent programmer with C++ knowledge and gettext knowledge. I don't know what needs to be done in this area however they shouldn't have to study Aspell that intensely as most of my text strings are concentrated together. They may also need to rework some of my strings into format strings (ie convert cout < "Bla.." < name < "..bla.." to something like "Bla.. $1 ..bla..") so that it can be translated correctly. However I have an idea how this should be done. \layout Standard \series bold \shape italic Task \series default : Making Aspell and Pspell thread safe. \layout Standard \series bold Skills \series default : Competent programmer with good C++ and thread safety knowledge. This is the area where the C++ skills will probably be needed the most. Even though Aspell itself is not multi-threaded I would like it to be thread safe so that it can be used by multi-threaded programs. I have several areas that are potently thread unsafe (such as accessing a global pool) and need some one to give me advice on how to best do this. I also have several classes which have the potential of being used by more than one thread (such as the personal dictionary) and needs to be made thread safe. \layout Standard \series bold \shape italic Task \series default : Cleaning up the build system with Aspell and Pspell and similar tasks \layout Standard \series bold Skills \series default : Competent shell programmer (preferably someone with more knowledge than I have) and a good knowledge of how GNU autoconf, automake, and libtool work. \layout Standard \series bold \shape italic Task \series default : Help with making the Aspell Dicts build system more robust \layout Standard \series bold Skills \series default : Competent shell programmer (preferably someone with more knowledge than I have) and a good enough knowledge of Perl to understand everything in in my "proc" script ( \begin_inset LatexCommand \url{http://aspell.sourceforge.net/ aspell-gen-0.9.tar.bz2} \end_inset ). \layout Standard \series bold \shape italic Task \series default : Miscellaneous other programming Tasks as I (or someone else) thinks of them \layout Standard \series bold Skills \series default : Competent programmer with good C++ knowledge. \layout Standard Once Aspell is complete (ie gets into a beta state) you are really going to appreciate it. It will be able to do everything ispell can do and a \emph on lot \emph default more. However, I need some help in getting there. \layout Standard With out some serious help it is highly likely that Aspell will not be able to be complete (ie reach a beta state) till next summer as I won't be able to work on Aspell a great deal once School starts up again. \layout Standard Thanks in advance for anyone who can offer be some help. \layout Standard --- \newline Kevin Atkinson \newline kevina at users sourceforge net \newline \begin_inset LatexCommand \url{http://www.ibiblio.org/kevina/} \end_inset \layout Section Compiling & Installing \layout Subsection Generic Install Instructions \layout Standard Before Aspell is compiled Pspell must be installed. You can obtain the latest version of Pspell from \begin_inset LatexCommand \url{http://pspell.sourceforge.net/} \end_inset . Both Pspell and Aspell must have the same prefix directory in order to function correctly. \layout Standard Once Pspell is installed and you have read the sections below to take care of any special requirements for you system simply type \layout Quote ./configure && make \layout Standard or \layout Quote ./configure --disable-static && make \layout Standard to avoid making the static libraries on a system that supports shared libraries. For additional configure options type ./configure --help. You can control what C++ compiler is used by setting the environmental variable CXX before running configure and you can control what flags are passed to the C++ compile via the environmental variable CXXFLAGS. \layout Standard Aspell should then compile with out any additional user intervention. If you run into problems please first check the sections below as that might solve your problem. If it doesn't please post a message to the aspell-help mailing list with the compiler, system you are using and any error messages that were produced. You can find more info on the aspell-help mailing list info page at \begin_inset LatexCommand \url{http://lists.sourceforge.net/lists/listinfo/aspell-help} \end_inset . \layout Standard To install the program simply type \layout Quote make install \layout Standard And that's all there is too it for a basic installation. \layout Standard If you do not have Ispell or the traditional Unix \begin_inset Quotes eld \end_inset spell \begin_inset Quotes erd \end_inset utility installed on your system than you should also copy the compatibly scripts \begin_inset Quotes eld \end_inset ispell \begin_inset Quotes erd \end_inset and \begin_inset Quotes eld \end_inset spell \begin_inset Quotes erd \end_inset located in the scripts/ directory into your binary directory which is usually /usr/local/bin so that programs that expect ispell or spell command will work correctly. \layout Subsection General Problems \layout Standard Aspell requires a specific version of Pspell. If the wrong version of Pspell is installed Aspell will not compile correctly. So before you try anything else make sure you are using the correct version of Pspell as stated in requirements ( \begin_inset LatexCommand \ref{reqs} \end_inset ) section. \layout Standard Aspell does not use a released version of GNU Libtool. In previous versions of aspell this will often create problems if you inadverte ntly modify a file which causes Libtool to be called. However, as of Aspell .33.6.1 this should no longer be a problem and automake, autoconf, or libtool should not be called unless you specifically call them or if you configure Aspell with --enable-maintainer-mode. If you do notice any of these programs being called (and you did not configure with --enable-maintainer-mode) please let me know about it. If you have a need to modify configure.in or any of the Makefile.am's you should install the multi-language-branch of the CVS version of libtool. \layout Subsection Curses Notes \layout Standard If you are having problems compiling termios.cc than the most likely reason is due to incompatibilities with the curses implementation on your system. If this is the case than you can explicitly disable the curses library with --disable-curses. By doing this you will lose the nice full screen interface but hopefully you will be able to at least get Aspell to compile correctly. \layout Standard If the curses library is installed in a non-standard location than you can specify the library and include directory with --enable-curses=<> and --enable-curses-include=<>. \series bold Lib \series default can either be the complete path of the library (for example \begin_inset Quotes eld \end_inset /usr/local/curses/libcurses.a \begin_inset Quotes erd \end_inset ), the name of the library (for example \begin_inset Quotes eld \end_inset ncurses \begin_inset Quotes erd \end_inset ) or a combined location and library in the form \begin_inset Quotes eld \end_inset -L<> -l<> \begin_inset Quotes erd \end_inset (for example \begin_inset Quotes eld \end_inset -L/usr/local/ncurses/lib -lncurses \begin_inset Quotes erd \end_inset ). \series bold Dir \series default is the location of the curses header files (for example \begin_inset Quotes eld \end_inset /usr/local/ncurses/include \begin_inset Quotes erd \end_inset ). \layout Subsection Win32 Notes \layout Standard Aspell is now able to compile on Win32 platforms using the Win32 version of gcc. Aspell .30.1 can either be compiled with the Cgiwin or the Mingw version of Gcc 2.95 using the Cgiwin development environment. The Mingw version of Aspell will have slightly less functionality, but none of which is noticeable to the end user. In order to get the nice full screen interface with Mingw when spell checking files a curses implementation that does not require Cygwin is required. The PDCurses ( \begin_inset LatexCommand \url{http://www.lightlink.com/hessling/PDCurses/} \end_inset ) implementation is known to work, other implementations may work however they have not been tested. See the previous section for information on specifying the location of the curses library and include file. \layout Standard When compiling Pspell I recommend you configure with --disable-shared and --disable-ltdl. Shared libraries won't work correctly anyway on Win32 and trying to compile the ltdl library can lead to unnecessary complications. When compiling Aspell I recommend you configure with --disable-shared. If you are planning to use Aspell outside if the Cygwin environment I strongly recommend you install Aspell in its own location (ie prefix is not /usr/local/) and compile it with --enable-win32-relocatable. Please note that Pspell and Aspell must be installed in the same location. (ie don't install Pspell in c:/pspell and Aspell in c:/aspell. Instead install them both in c:/aspell) \layout Standard If Aspell is compiled with --enable-win32-relocatable and the \series bold bindir \series default is set to the same value as \series bold prefix \series default (ie not <>/bin) then the Aspell directory (what prefix is set to) can be relocated anywhere provided that none of the data files are moved around within the Aspell directory. \layout Standard The default paths for Aspell are designed for a Unix system and not a Win32 system so you might want to specify different ones when compiling Aspell. Also if the HOME environmental variable is not set Aspell will assume it is the current working directly. This may lead to your personal word lists being saved in unpredictable locations. To solve this either compile with --enable-win32-relocatable (see above) or specify the complete path of the personal and replacement word lists in aspell.conf. If Aspell is compiled with --enable-win32-relocatable than the personal word lists are saved in the \series bold prefix \series default directory and the name is changed from \begin_inset Quotes eld \end_inset \family typewriter .aspell..* \family default \begin_inset Quotes erd \end_inset to \begin_inset Quotes erd \end_inset \family typewriter .* \family default \begin_inset Quotes erd \end_inset . \layout Subsection Egcs 1.1 Notes \layout Standard Aspell should now be able work with Egcs 1.1 but I have not been able to actually test it. If you have any luck one way or the other please let me know. \layout Subsection Upgrading from version .33 \layout Standard Even though .33.5 is a minor release it will unfortunately break binary compatibil ity with Aspell .33 due to the extensive changes needed to make Aspell better C++ compliant. This means applications such as Gaspell will need to be recompiled. \layout Subsection Upgrading from version .32.6 \layout Standard I have expanded the medium (*-med) word lists and decided to eliminate the large word lists (*-lrg) for now. However, the installing process will not automatically remove the large word lists so if you don't want them hanging around you should delete them your self. To remove all the files remove the following files from <>/aspell: \layout Quote \align left american-lrg-only british-lrg-only canadian-lrg-only english-lrg-only american-l rg.multi british-lrg.multi canadian-lrg.multi \layout Standard and the following files from <>/pspell: \layout Quote \align left en-american-lrg-aspell.pwli en-canadian-lrg-aspell.pwli en-british-lrg-aspell.pwli \layout Subsection Upgrading from version .32.1 \layout Standard Even though .32.5 is a minor release it breaks binary compatibly which means applications such as Gaspell will need to be recompiled. \layout Subsection Upgrading from version .31.1 \layout Standard The format and name of the main dictionary has changed yet again. The install process will over write the old version, so unless you are using dictionaries other than the one provided with aspell or want to have multiple versions of aspell installed you should not have to worry about this. \layout Standard The apostrophe (') is no longer considered part of the word if it appears at the end of a word. This means that you may have to manually remove words from your personal word list if you get a message similar to: \layout Quote Invalid word "dogs'": The character ''' may not appear at the end of a word. \layout Standard To remove the word simply delete the line containing the word form the personal word list ( normally called \begin_inset Quotes eld \end_inset .aspell.english.pws \begin_inset Quotes erd \end_inset ). \layout Standard Aspell now uses a completely new word list. This means that same words that were in the original word list may no longer appear in the current one. You may now also chose from American, British, and Canadian spelling and from two sizes medium and large. See section \begin_inset LatexCommand \ref{dict-opts} \end_inset for more information on choosing among the different choices. The original source that the word lists were created from is now found under the scowl/ directory. \layout Subsection Upgrading from version .30 \layout Standard The format of the main dictionary file has changed a bit. If you were able to use Aspell .30 then the old format should work. The only time the old format will NOT work is in the rare case the mmap fails. Previous version of aspell will just abort with an error when the mmap fails but the new version will attempt to read in the file using fread. Fread will fail with the old version of the main word list. \layout Subsection Upgrading from version .29.1 \layout Standard The format (but not the name) of the main dictionary has changed yet again. The install process will over write the old version, so unless you are using dictionaries other than the one provided with aspell or want to have multiple versions of aspell installed you should not have to worry about this. \layout Standard Aspell also now depends on Portable Spell Checker Interface Library otherwise known as Pspell. Pspell must be installed before aspell will compile, you can find it at \begin_inset LatexCommand \url{http://pspell.sourceforge.net/} \end_inset . \layout Subsection Upgrading from version .29 \layout Standard The format and name of the main dictionary has changed which means it will need to be recompiled. The install process will remove the old files for you, so unless you are using dictionaries other than the one provided with aspell or want to have multiple versions of aspell installed you should not have to worry about this. \layout Subsection Upgrading from version .28.3 \layout Standard Aspell now uses namespaces which means egcs 1.0 and gcc 2.8 will no longer cut it. If this becomes a serious problem let me know as it should not be to difficult to get it working again with egcs 1.0 and gcc 2.8. \layout Standard Due to the new soundslike code the the main dictionary will need to be recompile d. The build process does this automatically so unless you want to have more than one version of aspell around you should not need to worry about this. \layout Standard The format and file name of the personal dictionaries has also changed. In most cases aspell will automatically detect this and convert it for you by using the following algorithm. \layout Enumerate If no file exist of *.pws (for the personal word list) or *.prepl (for the personal replacement list) aspell will look for *.per or *.rpl respectfully. If that file is found it will read in the data using the old format. \layout Enumerate When saving the dictionary it will save is as *.pws or *.prepl respectfully. \layout Enumerate Once saved as the new format it will delete the old file. \layout Standard If you have an older version of aspell around you can restore the old dictionari es by using these command \layout Quote aspell.new dump personal | aspell.old create personal \layout Quote aspell.new dump repl | aspell.old create repl \layout Standard The new version of aspell will then leave the old files alone as long as *.pws and *.prepl exist. \layout Standard Also, if the file does not end in .pws or .prepl it will try to read it in using the new format and if that fails it will read in the old format. When the file is saved it will be saved as the new format. \layout Standard I am hopping I will not have to change the format of the personal dictionaries again. However, the main word list however is very likely to change in format. \layout Subsection Upgrading from version .28.2.1 \layout Standard The behavior of \begin_inset Quotes eld \end_inset aspell check \begin_inset Quotes erd \end_inset changed so that it will now over right the original file as creating new file was creating too many problems when used with programs like pine and vi. \layout Subsection Upgrading from version .27.2 \layout Standard The name of the personal word lists have changes from .aspell.per and .aspell.rpl to .aspell.<>.per and .aspell.<>.rpl respectively. <> is is the language name which will generally be \begin_inset Quotes eld \end_inset english \begin_inset Quotes erd \end_inset . If you wish to use your old word lists you will need to rename those files. \layout Subsection Upgrading from version .25 \layout Standard The format of the personal replacement dictionary has changed. So, you will either need to rename or remove the file \series bold .aspell.rpl \series default located in your home directory. If you have information in this file you would like to preserve please send me an email. \layout Subsection Upgrading from version .24 \layout Standard Because the location of the main word list moved you should probably do a \series bold make uninstall \series default (with the old version of a Aspell) before upgrading to remove the old word lists. A make uninstall will not remove any personal word lists. \layout Chapter Basic Usage \layout Standard For a quick reference on the Aspell utility use the command \begin_inset Quotes eld \end_inset aspell --help \begin_inset Quotes erd \end_inset . \layout Section Spellchecking Individual Files \begin_inset LatexCommand \label{check} \end_inset \layout Standard To use Aspell to spellcheck a file type in \layout Quote aspell check [<>] <> \layout Standard at the command line where <> is the file you want to check and <> is any number of optional options. Some of the more useful ones include: \layout Description --mode=< the mode to use when checking files. The available modes are none, url, email, sgml, or tex. See section \begin_inset LatexCommand \ref{filter} \end_inset for more informations on the various modes. \layout Description --dont-backup don't create a backup file. \layout Description --sug-mode=<> the suggestion mode to use where mode is one of ultra, fast, normal, or bad-spellers. See section \begin_inset LatexCommand \ref{suggestion} \end_inset for more information on these modes. \layout Description --master=<> the main dictionary to use. The default aspell installation provided the following dictionaries: american, british, and canadian. \layout Standard Please see Chapter \begin_inset LatexCommand \ref{customizing} \end_inset for more information on the available options. \layout Standard For example to check the file foo.txt: \layout Quote aspell check foo.txt \layout Standard and to check the file foo.txt using the bad-spellers suggestion mode and the large American English dictionary: \layout Quote aspell check --sug-mode=bad-spellers --master=american-lrg foo.txt \layout Standard If the \series bold mode \series default option is not given then aspell will use the extension of the file to determine the current mode. If the extension is .tex, then TeX mode will be uses, if the extension is .html, .htm, .php, or .sgml it will check the file in sgml mode, otherwise it will use url mode. Please note that the \series bold sgml-options \series default can be used to change what extension are used for the sgml mode. See chapter \begin_inset LatexCommand \ref{filter} \end_inset for more information on the various modes that can be used. \layout Standard If Aspell was compiled with curses support and the TERM environmental variable is set to a capable terminal type than Aspell will use a nice full screen interface. Otherwise it will use a simpler \begin_inset Quotes eld \end_inset dumb \begin_inset Quotes erd \end_inset terminal interface where the misspelled word is surrounded by two '*'. In either case the interface should be self explanatory. \layout Section Using Aspell with other Applications \layout Subsection With Applications that Expect Ispell \layout Standard Aspell can be used as a drop in replacement for Ispell for programs that use Ispell through a pipe such as Emacs and LyX. It can also be used with programs that use simple call the ispell command and expect the original file to be overwritten with the corrected version. It support the basic features of Ispell, however it does not currently have a Nroff mode so there may be situations in which you still wish to use Ispell. Nevertheless, I have been using Aspell for Xemacs and LyX since the middle of September of 1998 with out any problems. \layout Standard If you do not have Ispell installed on your system and have installed the Ispell compatibly script than you should not need to do anything as most applications will that expect Ispell will work as expected with Aspell via the Ispell compatibility script. \layout Standard Otherwise, the recommended way to use Aspell as a replacement for ispell is to change the Ispell command from within the program being used. If the program uses ispell in pipe mode simple change ispell to aspell. If the program calls the \series bold \series default ispell command to check the file change \begin_inset Quotes eld \end_inset ispell \begin_inset Quotes erd \end_inset \series bold \series default with \begin_inset Quotes eld \end_inset aspell check \begin_inset Quotes erd \end_inset . \layout Standard If that is impossible and the program uses ispell through a pipe than the run-with-aspell script can be used for programs using ispell in pipe mode. The format of the script is: \layout Quote run-with-aspell <> \layout Standard where <> is the name of the program with any optional arguments. \layout Standard The old method of mapping Ispell to Aspell is discouraged because it can create compatibility problems with programs that actually require Ispell such as Ispell's own scripts. \layout Subsection With Emacs and Xemacs \layout Standard The easiest way to use Aspell with Emacs or Xemacs is to add this line: \layout LyX-Code (setq-default ispell-program-name "aspell") \layout Standard to the end of your .emacs file. \layout Standard For some reason version 3.0 of ispell.el (the lisp program that (x)emacs uses) want to reverse the suggestion list. To fix this add this line: \layout LyX-Code (setq-default ispell-extra-args '("--reverse")) \layout Standard after the previous line in your .emacs file and it should solve the problem. \layout Standard Ispell.el, version 3.1 (December 1, 1998) and better, has the list reversing problem fixed. You can find it at \begin_inset LatexCommand \url{http://www.kdstevens.com/~stevens/ispell-page.html} \end_inset . \layout Subsection With LyX \layout Standard Version 1.0 of LyX provides support for Aspell learning for users mistake feature. \layout Standard To use aspell with LyX 1.0 either change the \series bold spell_command \series default option in the lyxrc file or use the run-with-aspell utility. \layout Subsection With VIM \layout Standard \shape italic (The following section was written by "R. Marc", rmarc at copacetic net.) \layout Standard To use aspell in vim you simply need to add the following line to your .vimrc file: \layout LyX-Code map ^T :w!:!aspell check %:e! % \layout Standard I use since that's the way you spell check in pico. In order to add a control character to your .vimrc you must type first. In this case . \layout Standard A more useful way to use Aspell, IMHO, is in combination with newsbody ( \begin_inset LatexCommand \url{http://www.image.dk/~byrial/newsbody/} \end_inset ) which is how I use it since vim is my editor for my mailer and my news reader. \layout LyX-Code map ^T \backslash 1 \backslash 2:e! % \layout LyX-Code map \backslash 1 :w! \layout LyX-Code map \backslash 2 :!newsbody -qs -n % -p aspell check \backslash %f \layout Subsection With Pine \layout Standard To use aspell in pine simply change the option \series bold speller \series default to \layout Quote aspell --mode=email check \layout Standard To change the speller option go to the main menu. Type \series bold S \series default for \emph on setup \emph default , \series bold C \series default for \emph on config \emph default , then W for \emph on where is \emph default . Type in \series bold speller \series default as the word to find. The speller option should be highlighted now. Hit enter, type in the above line, and hit enter again. Then type \series bold E \series default for \emph on exit setup \emph default and \series bold Y \series default to save the change. \layout Standard If you have a strong desire to check other peoples comments change \series bold speller \series default to \layout Quote aspell check \layout Standard instead which will avoid switching aspell into email mode. \layout Chapter Managing Word Lists \begin_inset LatexCommand \label{manage} \end_inset \layout Section Creating an Individual Word List \layout Standard To create an individual main word list from a list of words use the command \layout Quote aspell --lang=<> create master ./<> < <> \layout Standard where <> is the name of the word list and <> is the list of words separated by white space. The name of the word list will automatically be converted to all lowercase. The \begin_inset Quotes eld \end_inset ./ \begin_inset Quotes erd \end_inset is important because without it aspell will create the word list in the normal word list directory. If you are trying to create a word list in a language other than english check the aspell data-dir (usually /usr/share/aspell, use \begin_inset Quotes eld \end_inset aspell dump config \begin_inset Quotes erd \end_inset to find out what it is on your system) to see if a language data file exists for your language. If not you will need to create one. See chapter \begin_inset LatexCommand \ref{inter} \end_inset for more information on using Aspell with other languages. \layout Standard This will create the file <> in the current directory. To use the new word list copy the file to the normal word list directory (use \begin_inset Quotes eld \end_inset aspell config \begin_inset Quotes erd \end_inset to find out what it is) and use the option --master=<>. \layout Standard The compiled dictionary file is machine dependent. It is dependent on endian order, and the page size for the machine because they are mmaped in. Please do not distribute the compiled dictionaries unless you are only distributing them for a particular platform such as you would a binary. That is why is normally installed in \begin_inset Quotes eld \end_inset lib/aspell \begin_inset Quotes erd \end_inset instead of \begin_inset Quotes eld \end_inset share/aspell \begin_inset Quotes erd \end_inset . \layout Standard Aspell is now also able to use special \begin_inset Quotes eld \end_inset multi \begin_inset Quotes erd \end_inset dictionaries. See section \begin_inset LatexCommand \ref{dict-opts} \end_inset form more information. \layout Standard A personal and replacement word list can be created in a similar fashion. \layout Standard Because Aspell does not support any sort of affix compression like Ispell does Ispell word lists will not work as is. In order to use Ispell's word lists simply pipe the word list through ``ispell -e'' to expand the munched word lists. \layout Subsection Format of the Replacement Word List \layout Standard The replacement word has each replacement pair on its own line in the following format \layout LyX-Code <>: <> \layout LyX-Code \layout Section The PWLI file \layout Standard In order for Aspell to be able to correctly recognize a dictionary based on the setting of the LANG environmental variable and for Pspell to be able to find your word lists each main word list installed should have at least one PWLI file associated with it in the Pspell data directory. This is normally /usr/local/share/pspell/. You can use \begin_inset Quotes eld \end_inset pspell-config pkgdatadir \begin_inset Quotes erd \end_inset to find out what it is on your system. \layout Standard Each PWLI has the the following name: \layout Quote <>[-[<>][-<>]]-<>.pwli \layout Standard Where <> is the two letter language code, <> is the particular spelling your interested in if the languages has multiple spelling in different parts of the world such as English, <> is any extra informations to distinguish the word list from other ones with the same language and spelling, and <> is the pspell module the main word list is for. \layout Standard For example: \layout Quote en-aspell.pwli \newline en-american-aspell.pwli \newline en-american-medical-ispell.pwli \newline en-american-xlg-ispell.pwli \newline de--medical-ispell.pwli \layout Standard Notice how if the spelling is left out but the jargon is not there needs to be two dashes between the language and the jargon. \layout Standard Each PWLI file for an Aspell word list should then contain exactly one line which contains the full path of the main word list. \layout Section Dumping the contents of the word list \layout Standard The dump command will simply dump the contents of a word list to stdout in a format than can be read back in with \series bold aspell create \series default . \layout Standard If no word list is specified the command will act on the default one. For example the command \layout Quote aspell dump personal \layout Standard will simply dump the contents of the current personal word list to stdout. \layout Chapter Customizing Aspell \begin_inset LatexCommand \label{customizing} \end_inset \layout Standard The behavior of Aspell can be changed by any number of options which can be specified at either the command line, the environmental variable ASPELL_CONF , a personal configuration file, or a global configuration file. Options specified on the command line override options specified by the environmental variable. Options specified by the environmental variable override options specified by either of the configurations files. Finally options specified by the personal configuration file override options specified in the global configuration file. Options specified in the environmental variable ASPELL_CONF, a personal configuration file, or a global configuration file will take effect no matter how Aspell is used which includes being used by other applications. \layout Standard Aspell has three basic type of options: \series bold boolean \series default , \series bold value \series default , and \series bold list \series default . \series bold Boolean \series default options are either enabled or disabled, \series bold value \series default options take a specific value, and \series bold list \series default options can either have entries added or removed from the list. \layout Section Specifying Options \layout Subsection At the Command Line \layout Standard All options specified at the command line have the following basic format: \layout Quote --<