diff options
author | David Aspinall <da@inf.ed.ac.uk> | 2003-03-03 20:15:29 +0000 |
---|---|---|
committer | David Aspinall <da@inf.ed.ac.uk> | 2003-03-03 20:15:29 +0000 |
commit | 802550084d24492db40f2dcc4a1e238b81142589 (patch) | |
tree | 80fb7ce4ff7d8fa72692355972d781fb410cd437 | |
parent | f43c7f921d796946b7888c800df49b12790fd469 (diff) |
Deleted file
-rw-r--r-- | x-symbol/README | 38 | ||||
-rw-r--r-- | x-symbol/etc/abacus.xbm | 39 | ||||
-rw-r--r-- | x-symbol/etc/colormap66.xpm | 76 | ||||
-rw-r--r-- | x-symbol/etc/filing.xbm | 39 | ||||
-rw-r--r-- | x-symbol/etc/rgb.txt | 753 | ||||
-rw-r--r-- | x-symbol/etc/scroll2.xbm | 39 | ||||
-rw-r--r-- | x-symbol/etc/splat.xbm | 44 | ||||
-rw-r--r-- | x-symbol/etc/stopsign.xbm | 38 | ||||
-rw-r--r-- | x-symbol/lisp/x-symbol-myuc.el | 118 | ||||
-rw-r--r-- | x-symbol/lisp/x-symbol-site.el | 75 | ||||
-rw-r--r-- | x-symbol/man/x-symbol.texi-exp | 7493 | ||||
-rw-r--r-- | x-symbol/man/x-symbol.texi.2 | 7476 |
12 files changed, 0 insertions, 16228 deletions
diff --git a/x-symbol/README b/x-symbol/README deleted file mode 100644 index 8fc52024..00000000 --- a/x-symbol/README +++ /dev/null @@ -1,38 +0,0 @@ -### README --- semi WYSIWYG for LaTeX, HTML, etc, using additional fonts - -## Author: Christoph Wedler <wedler@users.sourceforge.net> -## Maintainer: (Please use `M-x x-symbol-package-bug' to contact the maintainer) -## Version: 4.4 -## Keywords: WYSIWYG, LaTeX, HTML, wp, math, internationalization -## X-URL: http://x-symbol.sourceforge.net/ - - -You have downloaded the source distribution of the beta version of package -X-Symbol. It is intended to be used by developers. Most users are better -off with the binary distribution x-symbol-VERSION-pkg.tar.gz. - -## Emacs: ==================================================================== - -The installation of X-Symbol on Emacs can be improved. - -If you do not want to use the binary distribution and follow the installation -instructions on the web page, you might want to try "lisp/Makefile". For the -info file, check "man/Makefile". - -Any help in improving the installation of X-Symbol on Emacs is highly -appreciated! Err, that means, I very much prefer patches to suggestions in -this area... - -The best mid- to long-term contribution would be to help the Emacs team with -the implementation of a package system. It has already considered as useful, -the authors of XEmacs' package system have signed papers, there are just people -missing doing the work... - -## XEmacs: =================================================================== - -Check & use the Makefile in this directory. - -If you want to produce & compile all lisp files, produce the info files and -produce & compile & install the font files, invoke - - make -k all diff --git a/x-symbol/etc/abacus.xbm b/x-symbol/etc/abacus.xbm deleted file mode 100644 index f0a6b220..00000000 --- a/x-symbol/etc/abacus.xbm +++ /dev/null @@ -1,39 +0,0 @@ -#define abicus_width 64 -#define abicus_height 54 -static char abicus_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, - 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xfe, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x2f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, - 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x2e, 0x0e, 0x87, 0x83, - 0xe0, 0x70, 0x38, 0x2e, 0x2e, 0x9d, 0x4e, 0x87, 0xd0, 0xe9, 0x74, 0x2e, - 0x2e, 0x9f, 0xcf, 0x87, 0xf0, 0xf9, 0x7c, 0x2e, 0x2e, 0x0e, 0x87, 0x83, - 0xe0, 0x70, 0x38, 0x2e, 0x2e, 0x9d, 0x0e, 0x81, 0xd0, 0xe9, 0x74, 0x2e, - 0x2e, 0x9f, 0x0f, 0xc1, 0xf1, 0xf9, 0x7c, 0x2e, 0x2e, 0x0e, 0x07, 0xa1, - 0xe3, 0x70, 0x38, 0x2e, 0x2e, 0x04, 0x02, 0xe1, 0x43, 0x20, 0x10, 0x2e, - 0x2e, 0x04, 0x82, 0xc3, 0x41, 0x20, 0x10, 0x2e, 0x2e, 0x04, 0x42, 0xa7, - 0x43, 0x20, 0x10, 0x2e, 0x3e, 0x04, 0xc2, 0xe7, 0x43, 0x20, 0x10, 0x3e, - 0x22, 0x04, 0x82, 0xc3, 0x41, 0x20, 0x10, 0x22, 0xea, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x2b, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, - 0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x20, 0xea, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x2b, 0x22, 0x04, 0x82, 0x83, 0x40, 0x20, 0x10, 0x22, - 0x3e, 0x04, 0x42, 0x87, 0x40, 0x20, 0x10, 0x3e, 0x2e, 0x04, 0xc2, 0x87, - 0x40, 0x20, 0x10, 0x2e, 0x2e, 0x04, 0x82, 0x83, 0x40, 0x20, 0x10, 0x2e, - 0x2e, 0x04, 0x42, 0x87, 0x40, 0x20, 0x10, 0x2e, 0x2e, 0x04, 0xc2, 0x87, - 0x40, 0x20, 0x10, 0x2e, 0x2e, 0x04, 0x82, 0x83, 0x40, 0x20, 0x10, 0x2e, - 0x2e, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x2e, 0x2e, 0x0e, 0x07, 0xc1, - 0xe1, 0x70, 0x38, 0x2e, 0x2e, 0x9d, 0x0e, 0xa1, 0xd3, 0xe9, 0x74, 0x2e, - 0x2e, 0x9f, 0x0f, 0xe1, 0xf3, 0xf9, 0x7c, 0x2e, 0x2e, 0x0e, 0x07, 0xc1, - 0xe1, 0x70, 0x38, 0x2e, 0x2e, 0x9d, 0x0e, 0xa1, 0xd3, 0xe9, 0x74, 0x2e, - 0x2e, 0x9f, 0x0f, 0xe1, 0xf3, 0xf9, 0x7c, 0x2e, 0x2e, 0x0e, 0x87, 0xc3, - 0xe1, 0x70, 0x38, 0x2e, 0x2e, 0x9d, 0x4e, 0xa7, 0xd3, 0xe9, 0x74, 0x2e, - 0x2e, 0x9f, 0xcf, 0xe7, 0xf3, 0xf9, 0x7c, 0x2e, 0x2e, 0x0e, 0x87, 0xc3, - 0xe1, 0x70, 0x38, 0x2e, 0x2e, 0x9d, 0x4e, 0xa7, 0xd3, 0xe9, 0x74, 0x2e, - 0x2e, 0x9f, 0xcf, 0xe7, 0xf3, 0xf9, 0x7c, 0x2e, 0x2e, 0x0e, 0x87, 0xc3, - 0xe1, 0x70, 0x38, 0x2e, 0x2e, 0x9d, 0x4e, 0xa7, 0xd3, 0xe9, 0x74, 0x2e, - 0x2e, 0x9f, 0xcf, 0xe7, 0xf3, 0xf9, 0x7c, 0x2e, 0x2e, 0x0e, 0x87, 0xc3, - 0xe1, 0x70, 0x38, 0x2e, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, - 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xfe, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x2f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/x-symbol/etc/colormap66.xpm b/x-symbol/etc/colormap66.xpm deleted file mode 100644 index f077adac..00000000 --- a/x-symbol/etc/colormap66.xpm +++ /dev/null @@ -1,76 +0,0 @@ -/* XPM */ -static char *xsymb[] = { -/* width height ncolors chars_per_pixel */ -"22 3 66 1", -/* colors */ -"0 c Black", -"1 c Gray5", -"2 c Gray10", -"3 c Gray15", -"4 c Gray20", -"5 c Gray25", -"6 c Gray30", -"7 c Gray35", -"8 c Gray40", -"9 c Gray45", -": c Gray50", -"; c Gray55", -"< c Gray60", -"= c Gray65", -"> c Gray70", -"@ c Gray75", -"A c Gray80", -"B c Gray85", -"C c Gray90", -"D c Gray95", -"E c forestgreen", -"F c firebrick1", -"G c firebrick2", -"H c firebrick3", -"I c firebrick4", -"J c blue1", -"K c blue2", -"L c blue3", -"M c blue4", -"N c red1", -"O c red2", -"P c red3", -"Q c red4", -"R c paleturquoise1", -"S c paleturquoise2", -"T c paleturquoise3", -"U c paleturquoise4", -"V c purple1", -"W c purple2", -"X c purple3", -"Y c purple4", -"Z c LemonChiffon", -"` c yellow1", -"a c yellow2", -"b c yellow3", -"c c yellow4", -"d c pink1", -"e c pink2", -"f c pink3", -"g c pink4", -"h c darkseagreen1", -"i c darkseagreen2", -"j c darkseagreen3", -"k c darkseagreen4", -"l c khaki1", -"m c khaki2", -"n c khaki3", -"o c khaki4", -"p c navajowhite1", -"q c navajowhite2", -"r c navajowhite3", -"s c navajowhite4", -"t c rosybrown1", -"u c rosybrown2", -"v c rosybrown3", -"w c rosybrown4", -/* pixels */ -"0123456789:;<=>@ABCDEF", -"GHIJKLMNOPQRSTUVWXYZ`a", -"bcdefghijklmnopqrstuvw" -}; diff --git a/x-symbol/etc/filing.xbm b/x-symbol/etc/filing.xbm deleted file mode 100644 index 6142290f..00000000 --- a/x-symbol/etc/filing.xbm +++ /dev/null @@ -1,39 +0,0 @@ -#define filing_width 64 -#define filing_height 54 -static char filing_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x13, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x44, - 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x11, 0x91, 0x01, 0x00, 0x00, - 0x00, 0xf0, 0x44, 0x44, 0x44, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x11, 0x11, - 0x11, 0x19, 0x00, 0x00, 0x00, 0x4c, 0x44, 0x44, 0x44, 0x74, 0x00, 0x00, - 0x00, 0x34, 0x11, 0x11, 0x11, 0x6e, 0x00, 0x00, 0x00, 0xc4, 0x44, 0x44, - 0xc4, 0x55, 0x00, 0x00, 0x00, 0x04, 0x13, 0x11, 0xb9, 0x6a, 0x00, 0x00, - 0x00, 0x04, 0x4c, 0x44, 0x57, 0x55, 0x00, 0x00, 0x00, 0x04, 0x30, 0xf1, - 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x04, 0xc0, 0x5c, 0x55, 0x55, 0x00, 0x00, - 0x00, 0x04, 0x00, 0xab, 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x84, 0x00, 0x56, - 0x55, 0x55, 0x00, 0x00, 0x00, 0x84, 0x01, 0xaa, 0xaa, 0x6a, 0x00, 0x00, - 0x00, 0x04, 0x16, 0x56, 0x55, 0x55, 0x00, 0x00, 0x00, 0x04, 0x18, 0xaa, - 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x56, 0x55, 0x55, 0x00, 0x00, - 0x00, 0x1d, 0x00, 0xaa, 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x71, 0x00, 0x56, - 0x55, 0x55, 0x00, 0x00, 0x00, 0xc1, 0x01, 0xaa, 0xaa, 0x6a, 0x00, 0x00, - 0x00, 0x01, 0x07, 0x56, 0x55, 0x55, 0x00, 0x00, 0x00, 0x01, 0x1c, 0xaa, - 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x01, 0x70, 0x56, 0x55, 0x55, 0x00, 0x00, - 0x00, 0x01, 0xc0, 0xab, 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x57, - 0x55, 0x55, 0x00, 0x00, 0x00, 0x61, 0x00, 0xab, 0xaa, 0x6a, 0x00, 0x00, - 0x00, 0x81, 0x05, 0x57, 0x55, 0x55, 0x00, 0x00, 0x00, 0x01, 0x06, 0xab, - 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x57, 0x55, 0x55, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0xab, 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x34, 0x00, 0x57, - 0x55, 0x55, 0x00, 0x00, 0x00, 0xc4, 0x00, 0xab, 0xaa, 0x6a, 0x00, 0x00, - 0x00, 0x04, 0x03, 0x57, 0x55, 0x55, 0x00, 0x00, 0x00, 0x04, 0x0c, 0xab, - 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x04, 0x30, 0x57, 0x55, 0x55, 0x00, 0x00, - 0x00, 0x04, 0xc0, 0xab, 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x84, 0x00, 0x56, - 0x55, 0x55, 0x00, 0x00, 0x00, 0x84, 0x01, 0xaa, 0xaa, 0x6a, 0x00, 0x00, - 0x00, 0x04, 0x16, 0x56, 0x55, 0x55, 0x00, 0x00, 0x00, 0x04, 0x18, 0xaa, - 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x56, 0x55, 0x75, 0x00, 0x00, - 0x00, 0x30, 0x00, 0xaa, 0xaa, 0xbe, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x56, - 0xd5, 0xef, 0x06, 0x00, 0x00, 0x00, 0x03, 0xaa, 0xfa, 0xbb, 0x1b, 0x00, - 0x00, 0x00, 0x0c, 0x56, 0xef, 0xee, 0x6e, 0x00, 0x00, 0x00, 0x30, 0xea, - 0xbb, 0xbb, 0x3b, 0x00, 0x00, 0x00, 0xc0, 0xfe, 0xee, 0xee, 0x6e, 0x00, - 0x00, 0x00, 0x00, 0xbf, 0xbb, 0xbb, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/x-symbol/etc/rgb.txt b/x-symbol/etc/rgb.txt deleted file mode 100644 index 7637245f..00000000 --- a/x-symbol/etc/rgb.txt +++ /dev/null @@ -1,753 +0,0 @@ -! $XConsortium: /usr/X/lib/X11/rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp $ -255 250 250 snow -248 248 255 ghost white -248 248 255 GhostWhite -245 245 245 white smoke -245 245 245 WhiteSmoke -220 220 220 gainsboro -255 250 240 floral white -255 250 240 FloralWhite -253 245 230 old lace -253 245 230 OldLace -250 240 230 linen -250 235 215 antique white -250 235 215 AntiqueWhite -255 239 213 papaya whip -255 239 213 PapayaWhip -255 235 205 blanched almond -255 235 205 BlanchedAlmond -255 228 196 bisque -255 218 185 peach puff -255 218 185 PeachPuff -255 222 173 navajo white -255 222 173 NavajoWhite -255 228 181 moccasin -255 248 220 cornsilk -255 255 240 ivory -255 250 205 lemon chiffon -255 250 205 LemonChiffon -255 245 238 seashell -240 255 240 honeydew -245 255 250 mint cream -245 255 250 MintCream -240 255 255 azure -240 248 255 alice blue -240 248 255 AliceBlue -230 230 250 lavender -255 240 245 lavender blush -255 240 245 LavenderBlush -255 228 225 misty rose -255 228 225 MistyRose -255 255 255 white - 0 0 0 black - 47 79 79 dark slate gray - 47 79 79 DarkSlateGray - 47 79 79 dark slate grey - 47 79 79 DarkSlateGrey -105 105 105 dim gray -105 105 105 DimGray -105 105 105 dim grey -105 105 105 DimGrey -112 128 144 slate gray -112 128 144 SlateGray -112 128 144 slate grey -112 128 144 SlateGrey -119 136 153 light slate gray -119 136 153 LightSlateGray -119 136 153 light slate grey -119 136 153 LightSlateGrey -190 190 190 gray -190 190 190 grey -211 211 211 light grey -211 211 211 LightGrey -211 211 211 light gray -211 211 211 LightGray - 25 25 112 midnight blue - 25 25 112 MidnightBlue - 0 0 128 navy - 0 0 128 navy blue - 0 0 128 NavyBlue -100 149 237 cornflower blue -100 149 237 CornflowerBlue - 72 61 139 dark slate blue - 72 61 139 DarkSlateBlue -106 90 205 slate blue -106 90 205 SlateBlue -123 104 238 medium slate blue -123 104 238 MediumSlateBlue -132 112 255 light slate blue -132 112 255 LightSlateBlue - 0 0 205 medium blue - 0 0 205 MediumBlue - 65 105 225 royal blue - 65 105 225 RoyalBlue - 0 0 255 blue - 30 144 255 dodger blue - 30 144 255 DodgerBlue - 0 191 255 deep sky blue - 0 191 255 DeepSkyBlue -135 206 235 sky blue -135 206 235 SkyBlue -135 206 250 light sky blue -135 206 250 LightSkyBlue - 70 130 180 steel blue - 70 130 180 SteelBlue -176 196 222 light steel blue -176 196 222 LightSteelBlue -173 216 230 light blue -173 216 230 LightBlue -176 224 230 powder blue -176 224 230 PowderBlue -175 238 238 pale turquoise -175 238 238 PaleTurquoise - 0 206 209 dark turquoise - 0 206 209 DarkTurquoise - 72 209 204 medium turquoise - 72 209 204 MediumTurquoise - 64 224 208 turquoise - 0 255 255 cyan -224 255 255 light cyan -224 255 255 LightCyan - 95 158 160 cadet blue - 95 158 160 CadetBlue -102 205 170 medium aquamarine -102 205 170 MediumAquamarine -127 255 212 aquamarine - 0 100 0 dark green - 0 100 0 DarkGreen - 85 107 47 dark olive green - 85 107 47 DarkOliveGreen -143 188 143 dark sea green -143 188 143 DarkSeaGreen - 46 139 87 sea green - 46 139 87 SeaGreen - 60 179 113 medium sea green - 60 179 113 MediumSeaGreen - 32 178 170 light sea green - 32 178 170 LightSeaGreen -152 251 152 pale green -152 251 152 PaleGreen - 0 255 127 spring green - 0 255 127 SpringGreen -124 252 0 lawn green -124 252 0 LawnGreen - 0 255 0 green -127 255 0 chartreuse - 0 250 154 medium spring green - 0 250 154 MediumSpringGreen -173 255 47 green yellow -173 255 47 GreenYellow - 50 205 50 lime green - 50 205 50 LimeGreen -154 205 50 yellow green -154 205 50 YellowGreen - 34 139 34 forest green - 34 139 34 ForestGreen -107 142 35 olive drab -107 142 35 OliveDrab -189 183 107 dark khaki -189 183 107 DarkKhaki -240 230 140 khaki -238 232 170 pale goldenrod -238 232 170 PaleGoldenrod -250 250 210 light goldenrod yellow -250 250 210 LightGoldenrodYellow -255 255 224 light yellow -255 255 224 LightYellow -255 255 0 yellow -255 215 0 gold -238 221 130 light goldenrod -238 221 130 LightGoldenrod -218 165 32 goldenrod -184 134 11 dark goldenrod -184 134 11 DarkGoldenrod -188 143 143 rosy brown -188 143 143 RosyBrown -205 92 92 indian red -205 92 92 IndianRed -139 69 19 saddle brown -139 69 19 SaddleBrown -160 82 45 sienna -205 133 63 peru -222 184 135 burlywood -245 245 220 beige -245 222 179 wheat -244 164 96 sandy brown -244 164 96 SandyBrown -210 180 140 tan -210 105 30 chocolate -178 34 34 firebrick -165 42 42 brown -233 150 122 dark salmon -233 150 122 DarkSalmon -250 128 114 salmon -255 160 122 light salmon -255 160 122 LightSalmon -255 165 0 orange -255 140 0 dark orange -255 140 0 DarkOrange -255 127 80 coral -240 128 128 light coral -240 128 128 LightCoral -255 99 71 tomato -255 69 0 orange red -255 69 0 OrangeRed -255 0 0 red -255 105 180 hot pink -255 105 180 HotPink -255 20 147 deep pink -255 20 147 DeepPink -255 192 203 pink -255 182 193 light pink -255 182 193 LightPink -219 112 147 pale violet red -219 112 147 PaleVioletRed -176 48 96 maroon -199 21 133 medium violet red -199 21 133 MediumVioletRed -208 32 144 violet red -208 32 144 VioletRed -255 0 255 magenta -238 130 238 violet -221 160 221 plum -218 112 214 orchid -186 85 211 medium orchid -186 85 211 MediumOrchid -153 50 204 dark orchid -153 50 204 DarkOrchid -148 0 211 dark violet -148 0 211 DarkViolet -138 43 226 blue violet -138 43 226 BlueViolet -160 32 240 purple -147 112 219 medium purple -147 112 219 MediumPurple -216 191 216 thistle -255 250 250 snow1 -238 233 233 snow2 -205 201 201 snow3 -139 137 137 snow4 -255 245 238 seashell1 -238 229 222 seashell2 -205 197 191 seashell3 -139 134 130 seashell4 -255 239 219 AntiqueWhite1 -238 223 204 AntiqueWhite2 -205 192 176 AntiqueWhite3 -139 131 120 AntiqueWhite4 -255 228 196 bisque1 -238 213 183 bisque2 -205 183 158 bisque3 -139 125 107 bisque4 -255 218 185 PeachPuff1 -238 203 173 PeachPuff2 -205 175 149 PeachPuff3 -139 119 101 PeachPuff4 -255 222 173 NavajoWhite1 -238 207 161 NavajoWhite2 -205 179 139 NavajoWhite3 -139 121 94 NavajoWhite4 -255 250 205 LemonChiffon1 -238 233 191 LemonChiffon2 -205 201 165 LemonChiffon3 -139 137 112 LemonChiffon4 -255 248 220 cornsilk1 -238 232 205 cornsilk2 -205 200 177 cornsilk3 -139 136 120 cornsilk4 -255 255 240 ivory1 -238 238 224 ivory2 -205 205 193 ivory3 -139 139 131 ivory4 -240 255 240 honeydew1 -224 238 224 honeydew2 -193 205 193 honeydew3 -131 139 131 honeydew4 -255 240 245 LavenderBlush1 -238 224 229 LavenderBlush2 -205 193 197 LavenderBlush3 -139 131 134 LavenderBlush4 -255 228 225 MistyRose1 -238 213 210 MistyRose2 -205 183 181 MistyRose3 -139 125 123 MistyRose4 -240 255 255 azure1 -224 238 238 azure2 -193 205 205 azure3 -131 139 139 azure4 -131 111 255 SlateBlue1 -122 103 238 SlateBlue2 -105 89 205 SlateBlue3 - 71 60 139 SlateBlue4 - 72 118 255 RoyalBlue1 - 67 110 238 RoyalBlue2 - 58 95 205 RoyalBlue3 - 39 64 139 RoyalBlue4 - 0 0 255 blue1 - 0 0 238 blue2 - 0 0 205 blue3 - 0 0 139 blue4 - 30 144 255 DodgerBlue1 - 28 134 238 DodgerBlue2 - 24 116 205 DodgerBlue3 - 16 78 139 DodgerBlue4 - 99 184 255 SteelBlue1 - 92 172 238 SteelBlue2 - 79 148 205 SteelBlue3 - 54 100 139 SteelBlue4 - 0 191 255 DeepSkyBlue1 - 0 178 238 DeepSkyBlue2 - 0 154 205 DeepSkyBlue3 - 0 104 139 DeepSkyBlue4 -135 206 255 SkyBlue1 -126 192 238 SkyBlue2 -108 166 205 SkyBlue3 - 74 112 139 SkyBlue4 -176 226 255 LightSkyBlue1 -164 211 238 LightSkyBlue2 -141 182 205 LightSkyBlue3 - 96 123 139 LightSkyBlue4 -198 226 255 SlateGray1 -185 211 238 SlateGray2 -159 182 205 SlateGray3 -108 123 139 SlateGray4 -202 225 255 LightSteelBlue1 -188 210 238 LightSteelBlue2 -162 181 205 LightSteelBlue3 -110 123 139 LightSteelBlue4 -191 239 255 LightBlue1 -178 223 238 LightBlue2 -154 192 205 LightBlue3 -104 131 139 LightBlue4 -224 255 255 LightCyan1 -209 238 238 LightCyan2 -180 205 205 LightCyan3 -122 139 139 LightCyan4 -187 255 255 PaleTurquoise1 -174 238 238 PaleTurquoise2 -150 205 205 PaleTurquoise3 -102 139 139 PaleTurquoise4 -152 245 255 CadetBlue1 -142 229 238 CadetBlue2 -122 197 205 CadetBlue3 - 83 134 139 CadetBlue4 - 0 245 255 turquoise1 - 0 229 238 turquoise2 - 0 197 205 turquoise3 - 0 134 139 turquoise4 - 0 255 255 cyan1 - 0 238 238 cyan2 - 0 205 205 cyan3 - 0 139 139 cyan4 -151 255 255 DarkSlateGray1 -141 238 238 DarkSlateGray2 -121 205 205 DarkSlateGray3 - 82 139 139 DarkSlateGray4 -127 255 212 aquamarine1 -118 238 198 aquamarine2 -102 205 170 aquamarine3 - 69 139 116 aquamarine4 -193 255 193 DarkSeaGreen1 -180 238 180 DarkSeaGreen2 -155 205 155 DarkSeaGreen3 -105 139 105 DarkSeaGreen4 - 84 255 159 SeaGreen1 - 78 238 148 SeaGreen2 - 67 205 128 SeaGreen3 - 46 139 87 SeaGreen4 -154 255 154 PaleGreen1 -144 238 144 PaleGreen2 -124 205 124 PaleGreen3 - 84 139 84 PaleGreen4 - 0 255 127 SpringGreen1 - 0 238 118 SpringGreen2 - 0 205 102 SpringGreen3 - 0 139 69 SpringGreen4 - 0 255 0 green1 - 0 238 0 green2 - 0 205 0 green3 - 0 139 0 green4 -127 255 0 chartreuse1 -118 238 0 chartreuse2 -102 205 0 chartreuse3 - 69 139 0 chartreuse4 -192 255 62 OliveDrab1 -179 238 58 OliveDrab2 -154 205 50 OliveDrab3 -105 139 34 OliveDrab4 -202 255 112 DarkOliveGreen1 -188 238 104 DarkOliveGreen2 -162 205 90 DarkOliveGreen3 -110 139 61 DarkOliveGreen4 -255 246 143 khaki1 -238 230 133 khaki2 -205 198 115 khaki3 -139 134 78 khaki4 -255 236 139 LightGoldenrod1 -238 220 130 LightGoldenrod2 -205 190 112 LightGoldenrod3 -139 129 76 LightGoldenrod4 -255 255 224 LightYellow1 -238 238 209 LightYellow2 -205 205 180 LightYellow3 -139 139 122 LightYellow4 -255 255 0 yellow1 -238 238 0 yellow2 -205 205 0 yellow3 -139 139 0 yellow4 -255 215 0 gold1 -238 201 0 gold2 -205 173 0 gold3 -139 117 0 gold4 -255 193 37 goldenrod1 -238 180 34 goldenrod2 -205 155 29 goldenrod3 -139 105 20 goldenrod4 -255 185 15 DarkGoldenrod1 -238 173 14 DarkGoldenrod2 -205 149 12 DarkGoldenrod3 -139 101 8 DarkGoldenrod4 -255 193 193 RosyBrown1 -238 180 180 RosyBrown2 -205 155 155 RosyBrown3 -139 105 105 RosyBrown4 -255 106 106 IndianRed1 -238 99 99 IndianRed2 -205 85 85 IndianRed3 -139 58 58 IndianRed4 -255 130 71 sienna1 -238 121 66 sienna2 -205 104 57 sienna3 -139 71 38 sienna4 -255 211 155 burlywood1 -238 197 145 burlywood2 -205 170 125 burlywood3 -139 115 85 burlywood4 -255 231 186 wheat1 -238 216 174 wheat2 -205 186 150 wheat3 -139 126 102 wheat4 -255 165 79 tan1 -238 154 73 tan2 -205 133 63 tan3 -139 90 43 tan4 -255 127 36 chocolate1 -238 118 33 chocolate2 -205 102 29 chocolate3 -139 69 19 chocolate4 -255 48 48 firebrick1 -238 44 44 firebrick2 -205 38 38 firebrick3 -139 26 26 firebrick4 -255 64 64 brown1 -238 59 59 brown2 -205 51 51 brown3 -139 35 35 brown4 -255 140 105 salmon1 -238 130 98 salmon2 -205 112 84 salmon3 -139 76 57 salmon4 -255 160 122 LightSalmon1 -238 149 114 LightSalmon2 -205 129 98 LightSalmon3 -139 87 66 LightSalmon4 -255 165 0 orange1 -238 154 0 orange2 -205 133 0 orange3 -139 90 0 orange4 -255 127 0 DarkOrange1 -238 118 0 DarkOrange2 -205 102 0 DarkOrange3 -139 69 0 DarkOrange4 -255 114 86 coral1 -238 106 80 coral2 -205 91 69 coral3 -139 62 47 coral4 -255 99 71 tomato1 -238 92 66 tomato2 -205 79 57 tomato3 -139 54 38 tomato4 -255 69 0 OrangeRed1 -238 64 0 OrangeRed2 -205 55 0 OrangeRed3 -139 37 0 OrangeRed4 -255 0 0 red1 -238 0 0 red2 -205 0 0 red3 -139 0 0 red4 -255 20 147 DeepPink1 -238 18 137 DeepPink2 -205 16 118 DeepPink3 -139 10 80 DeepPink4 -255 110 180 HotPink1 -238 106 167 HotPink2 -205 96 144 HotPink3 -139 58 98 HotPink4 -255 181 197 pink1 -238 169 184 pink2 -205 145 158 pink3 -139 99 108 pink4 -255 174 185 LightPink1 -238 162 173 LightPink2 -205 140 149 LightPink3 -139 95 101 LightPink4 -255 130 171 PaleVioletRed1 -238 121 159 PaleVioletRed2 -205 104 137 PaleVioletRed3 -139 71 93 PaleVioletRed4 -255 52 179 maroon1 -238 48 167 maroon2 -205 41 144 maroon3 -139 28 98 maroon4 -255 62 150 VioletRed1 -238 58 140 VioletRed2 -205 50 120 VioletRed3 -139 34 82 VioletRed4 -255 0 255 magenta1 -238 0 238 magenta2 -205 0 205 magenta3 -139 0 139 magenta4 -255 131 250 orchid1 -238 122 233 orchid2 -205 105 201 orchid3 -139 71 137 orchid4 -255 187 255 plum1 -238 174 238 plum2 -205 150 205 plum3 -139 102 139 plum4 -224 102 255 MediumOrchid1 -209 95 238 MediumOrchid2 -180 82 205 MediumOrchid3 -122 55 139 MediumOrchid4 -191 62 255 DarkOrchid1 -178 58 238 DarkOrchid2 -154 50 205 DarkOrchid3 -104 34 139 DarkOrchid4 -155 48 255 purple1 -145 44 238 purple2 -125 38 205 purple3 - 85 26 139 purple4 -171 130 255 MediumPurple1 -159 121 238 MediumPurple2 -137 104 205 MediumPurple3 - 93 71 139 MediumPurple4 -255 225 255 thistle1 -238 210 238 thistle2 -205 181 205 thistle3 -139 123 139 thistle4 - 0 0 0 gray0 - 0 0 0 grey0 - 3 3 3 gray1 - 3 3 3 grey1 - 5 5 5 gray2 - 5 5 5 grey2 - 8 8 8 gray3 - 8 8 8 grey3 - 10 10 10 gray4 - 10 10 10 grey4 - 13 13 13 gray5 - 13 13 13 grey5 - 15 15 15 gray6 - 15 15 15 grey6 - 18 18 18 gray7 - 18 18 18 grey7 - 20 20 20 gray8 - 20 20 20 grey8 - 23 23 23 gray9 - 23 23 23 grey9 - 26 26 26 gray10 - 26 26 26 grey10 - 28 28 28 gray11 - 28 28 28 grey11 - 31 31 31 gray12 - 31 31 31 grey12 - 33 33 33 gray13 - 33 33 33 grey13 - 36 36 36 gray14 - 36 36 36 grey14 - 38 38 38 gray15 - 38 38 38 grey15 - 41 41 41 gray16 - 41 41 41 grey16 - 43 43 43 gray17 - 43 43 43 grey17 - 46 46 46 gray18 - 46 46 46 grey18 - 48 48 48 gray19 - 48 48 48 grey19 - 51 51 51 gray20 - 51 51 51 grey20 - 54 54 54 gray21 - 54 54 54 grey21 - 56 56 56 gray22 - 56 56 56 grey22 - 59 59 59 gray23 - 59 59 59 grey23 - 61 61 61 gray24 - 61 61 61 grey24 - 64 64 64 gray25 - 64 64 64 grey25 - 66 66 66 gray26 - 66 66 66 grey26 - 69 69 69 gray27 - 69 69 69 grey27 - 71 71 71 gray28 - 71 71 71 grey28 - 74 74 74 gray29 - 74 74 74 grey29 - 77 77 77 gray30 - 77 77 77 grey30 - 79 79 79 gray31 - 79 79 79 grey31 - 82 82 82 gray32 - 82 82 82 grey32 - 84 84 84 gray33 - 84 84 84 grey33 - 87 87 87 gray34 - 87 87 87 grey34 - 89 89 89 gray35 - 89 89 89 grey35 - 92 92 92 gray36 - 92 92 92 grey36 - 94 94 94 gray37 - 94 94 94 grey37 - 97 97 97 gray38 - 97 97 97 grey38 - 99 99 99 gray39 - 99 99 99 grey39 -102 102 102 gray40 -102 102 102 grey40 -105 105 105 gray41 -105 105 105 grey41 -107 107 107 gray42 -107 107 107 grey42 -110 110 110 gray43 -110 110 110 grey43 -112 112 112 gray44 -112 112 112 grey44 -115 115 115 gray45 -115 115 115 grey45 -117 117 117 gray46 -117 117 117 grey46 -120 120 120 gray47 -120 120 120 grey47 -122 122 122 gray48 -122 122 122 grey48 -125 125 125 gray49 -125 125 125 grey49 -127 127 127 gray50 -127 127 127 grey50 -130 130 130 gray51 -130 130 130 grey51 -133 133 133 gray52 -133 133 133 grey52 -135 135 135 gray53 -135 135 135 grey53 -138 138 138 gray54 -138 138 138 grey54 -140 140 140 gray55 -140 140 140 grey55 -143 143 143 gray56 -143 143 143 grey56 -145 145 145 gray57 -145 145 145 grey57 -148 148 148 gray58 -148 148 148 grey58 -150 150 150 gray59 -150 150 150 grey59 -153 153 153 gray60 -153 153 153 grey60 -156 156 156 gray61 -156 156 156 grey61 -158 158 158 gray62 -158 158 158 grey62 -161 161 161 gray63 -161 161 161 grey63 -163 163 163 gray64 -163 163 163 grey64 -166 166 166 gray65 -166 166 166 grey65 -168 168 168 gray66 -168 168 168 grey66 -171 171 171 gray67 -171 171 171 grey67 -173 173 173 gray68 -173 173 173 grey68 -176 176 176 gray69 -176 176 176 grey69 -179 179 179 gray70 -179 179 179 grey70 -181 181 181 gray71 -181 181 181 grey71 -184 184 184 gray72 -184 184 184 grey72 -186 186 186 gray73 -186 186 186 grey73 -189 189 189 gray74 -189 189 189 grey74 -191 191 191 gray75 -191 191 191 grey75 -194 194 194 gray76 -194 194 194 grey76 -196 196 196 gray77 -196 196 196 grey77 -199 199 199 gray78 -199 199 199 grey78 -201 201 201 gray79 -201 201 201 grey79 -204 204 204 gray80 -204 204 204 grey80 -207 207 207 gray81 -207 207 207 grey81 -209 209 209 gray82 -209 209 209 grey82 -212 212 212 gray83 -212 212 212 grey83 -214 214 214 gray84 -214 214 214 grey84 -217 217 217 gray85 -217 217 217 grey85 -219 219 219 gray86 -219 219 219 grey86 -222 222 222 gray87 -222 222 222 grey87 -224 224 224 gray88 -224 224 224 grey88 -227 227 227 gray89 -227 227 227 grey89 -229 229 229 gray90 -229 229 229 grey90 -232 232 232 gray91 -232 232 232 grey91 -235 235 235 gray92 -235 235 235 grey92 -237 237 237 gray93 -237 237 237 grey93 -240 240 240 gray94 -240 240 240 grey94 -242 242 242 gray95 -242 242 242 grey95 -245 245 245 gray96 -245 245 245 grey96 -247 247 247 gray97 -247 247 247 grey97 -250 250 250 gray98 -250 250 250 grey98 -252 252 252 gray99 -252 252 252 grey99 -255 255 255 gray100 -255 255 255 grey100 -169 169 169 dark grey -169 169 169 DarkGrey -169 169 169 dark gray -169 169 169 DarkGray -0 0 139 dark blue -0 0 139 DarkBlue -0 139 139 dark cyan -0 139 139 DarkCyan -139 0 139 dark magenta -139 0 139 DarkMagenta -139 0 0 dark red -139 0 0 DarkRed -144 238 144 light green -144 238 144 LightGreen diff --git a/x-symbol/etc/scroll2.xbm b/x-symbol/etc/scroll2.xbm deleted file mode 100644 index 606b24c9..00000000 --- a/x-symbol/etc/scroll2.xbm +++ /dev/null @@ -1,39 +0,0 @@ -#define scroll_width 64 -#define scroll_height 54 -static char scroll_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x20, 0x00, 0x00, - 0x00, 0xf0, 0x7f, 0x00, 0x00, 0x40, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x3f, - 0x06, 0x0c, 0x00, 0x00, 0x00, 0x40, 0x38, 0x20, 0xf2, 0x18, 0x00, 0x00, - 0x00, 0x20, 0x06, 0x20, 0x99, 0x31, 0x00, 0x00, 0x00, 0xa0, 0xe1, 0x13, - 0x09, 0x62, 0x40, 0x01, 0x00, 0x41, 0x1e, 0x1e, 0xc9, 0x64, 0xe8, 0x04, - 0x4a, 0x30, 0x00, 0x08, 0x92, 0x54, 0x10, 0x80, 0x22, 0x8c, 0x7f, 0x04, - 0x62, 0xce, 0x00, 0x30, 0x01, 0x73, 0xc0, 0x03, 0x0c, 0x83, 0x00, 0x20, - 0x80, 0x00, 0x00, 0x03, 0xf0, 0x80, 0x00, 0x00, 0x60, 0xf8, 0x87, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x90, 0x07, 0x7c, 0x00, 0x00, 0x80, 0x00, 0x19, - 0x0c, 0x00, 0x30, 0x00, 0x00, 0x00, 0xb1, 0x04, 0x83, 0x7f, 0x08, 0x00, - 0x00, 0x00, 0x11, 0x83, 0x7c, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x21, 0x40, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x30, 0xfc, 0xc1, 0x01, 0x00, - 0x00, 0x00, 0x02, 0xc8, 0x03, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x02, 0x06, - 0x00, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x82, 0xe1, 0x87, 0x43, 0x01, 0x00, - 0x00, 0x00, 0x64, 0x1e, 0x78, 0x80, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x38, 0x40, 0x03, 0x00, 0x00, 0x00, 0x8c, 0x0f, 0x07, 0x80, 0x02, 0x00, - 0x00, 0x00, 0x72, 0xf0, 0x01, 0x40, 0x05, 0x00, 0x00, 0x80, 0x01, 0x3e, - 0x00, 0x80, 0x06, 0x00, 0x00, 0xe0, 0xc0, 0x01, 0x00, 0x40, 0x05, 0x00, - 0x00, 0x30, 0x3f, 0x00, 0x00, 0x80, 0x8a, 0x01, 0x00, 0x18, 0x10, 0x00, - 0x00, 0x40, 0x5d, 0x06, 0x00, 0x0f, 0x10, 0x00, 0x00, 0xa0, 0x3a, 0x0c, - 0xc0, 0x07, 0x20, 0x00, 0x00, 0x50, 0x1d, 0x18, 0xe0, 0x07, 0x20, 0x00, - 0x00, 0xa8, 0x06, 0x30, 0xf8, 0x01, 0x20, 0x00, 0x00, 0xd4, 0x01, 0x28, - 0x3c, 0x3e, 0x60, 0x00, 0x00, 0x3f, 0x00, 0x34, 0x8e, 0xc1, 0x40, 0xe0, - 0xff, 0x00, 0x00, 0x2a, 0x41, 0x7f, 0x41, 0x78, 0x00, 0x00, 0x00, 0x35, - 0xc0, 0x00, 0x41, 0x86, 0x01, 0x00, 0xa0, 0x1a, 0x80, 0xdb, 0x40, 0x32, - 0x03, 0x00, 0x54, 0x0f, 0x80, 0x24, 0x81, 0x5a, 0x06, 0x00, 0xea, 0x00, - 0x40, 0x24, 0x81, 0x92, 0x06, 0x40, 0x3f, 0x00, 0x20, 0x42, 0x82, 0x44, - 0x06, 0xe0, 0x01, 0x00, 0x10, 0x81, 0x0c, 0x39, 0x03, 0x1f, 0x00, 0x00, - 0xcc, 0xff, 0x11, 0x82, 0xf1, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0xcc, - 0x0c, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0xf0, 0x03, 0x00, 0x00, 0x00, - 0xfc, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/x-symbol/etc/splat.xbm b/x-symbol/etc/splat.xbm deleted file mode 100644 index 48eac458..00000000 --- a/x-symbol/etc/splat.xbm +++ /dev/null @@ -1,44 +0,0 @@ -#define splat_width 65 -#define splat_height 54 -static char splat_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc0, 0x80, 0x03, 0x0e, 0x00, - 0x43, 0x00, 0x00, 0x08, 0xa0, 0x01, 0x01, 0x04, 0x82, 0x23, 0x00, 0x00, - 0x00, 0xe0, 0x01, 0x01, 0x00, 0x03, 0x11, 0x00, 0x00, 0x00, 0x83, 0x01, - 0x01, 0x04, 0x40, 0xc0, 0x01, 0x00, 0x80, 0x05, 0x00, 0x00, 0x04, 0x00, - 0x64, 0x03, 0x00, 0xc0, 0x0e, 0x04, 0x01, 0x04, 0x18, 0xa0, 0x03, 0x00, - 0xc0, 0x1e, 0x08, 0x03, 0x0e, 0x1f, 0xa1, 0xc3, 0x00, 0x86, 0x1f, 0x90, - 0xff, 0xff, 0x0f, 0xe0, 0x23, 0x00, 0x08, 0x3c, 0xf0, 0xff, 0xff, 0x0f, - 0xf0, 0x10, 0x00, 0x10, 0x20, 0xf0, 0x2b, 0xfd, 0x0f, 0x70, 0x00, 0x00, - 0x00, 0x80, 0x7f, 0xf5, 0xff, 0x0f, 0x10, 0x06, 0x00, 0x00, 0x00, 0xbf, - 0xfe, 0xff, 0x1f, 0x04, 0x00, 0x00, 0x7c, 0x00, 0x5f, 0xff, 0xff, 0x1f, - 0x04, 0x78, 0x00, 0xc6, 0x01, 0xae, 0xff, 0xff, 0x1f, 0x01, 0xfe, 0x00, - 0xfa, 0xe7, 0xdf, 0xff, 0xff, 0xbf, 0x01, 0xf5, 0x00, 0xfc, 0xff, 0xef, - 0xff, 0xff, 0xff, 0x80, 0x7f, 0x00, 0x00, 0xe0, 0xdf, 0xff, 0xff, 0x7f, - 0x40, 0x00, 0x00, 0x00, 0xc0, 0xef, 0xff, 0xff, 0x7f, 0x1e, 0x00, 0x00, - 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xc0, 0xef, - 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x20, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x1b, 0x00, 0x00, 0xf6, 0xff, - 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x3c, 0x00, 0xce, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, - 0x1e, 0x00, 0x84, 0x7f, 0xde, 0xff, 0x03, 0x00, 0x00, 0x0e, 0x04, 0xc4, - 0x1f, 0x88, 0xff, 0x07, 0x30, 0x00, 0x0c, 0x02, 0xc4, 0x1f, 0x00, 0x0f, - 0x1e, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x08, 0x0f, 0x38, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x0c, 0x08, 0x06, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x08, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x06, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x04, 0x02, 0x34, 0x00, - 0x00, 0x01, 0x02, 0x00, 0x1c, 0x04, 0x00, 0x68, 0x00, 0x80, 0x00, 0x01, - 0x00, 0x1c, 0x04, 0x00, 0xd0, 0x00, 0x00, 0x80, 0x40, 0x08, 0x08, 0x04, - 0x02, 0x60, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x04, 0x04, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x08, 0x02, 0x04, 0x08, 0x00, 0x00, 0x08, 0x30, 0x00, - 0x08, 0x02, 0x00, 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x02, 0x04, 0xe0, 0x01, 0x00, - 0x00, 0x0f, 0x00, 0x00, 0x02, 0x04, 0x20, 0x01, 0x00, 0x80, 0x07, 0x00, - 0x00, 0x02, 0x00, 0xc0, 0x01, 0x00, 0xc0, 0x07, 0x00, 0x08, 0x06, 0x04, - 0x00, 0x00, 0x00, 0xb0, 0x43, 0x00, 0x08, 0x05, 0x04, 0x00, 0x00, 0x00, - 0xd8, 0x01, 0x00, 0x1c, 0x07, 0x06, 0x04, 0x00, 0x00, 0xe8, 0x01, 0x20, - 0x88, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x80, 0x0e, 0x0e, - 0x00, 0x02, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/x-symbol/etc/stopsign.xbm b/x-symbol/etc/stopsign.xbm deleted file mode 100644 index 6efe0018..00000000 --- a/x-symbol/etc/stopsign.xbm +++ /dev/null @@ -1,38 +0,0 @@ -#define stopsign_width 64 -#define stopsign_height 64 -static char stopsign_bits[] = { - 0x00,0x00,0xfc,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x7f,0x00, - 0x00,0x00,0x00,0x07,0x00,0x00,0xe0,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0xc0, - 0x01,0x00,0x00,0xc0,0xf9,0xff,0xff,0x8f,0x03,0x00,0x00,0xe0,0xac,0xaa,0xaa, - 0x1a,0x07,0x00,0x00,0x70,0x56,0x55,0x55,0x35,0x0e,0x00,0x00,0x38,0xab,0xaa, - 0xaa,0x6a,0x1c,0x00,0x00,0x9c,0x55,0x55,0x55,0xd5,0x38,0x00,0x00,0xce,0xaa, - 0xaa,0xaa,0xaa,0x71,0x00,0x00,0x67,0x55,0x55,0x55,0x55,0xe3,0x00,0x80,0xb3, - 0xaa,0xaa,0xaa,0xaa,0xc6,0x01,0xc0,0x59,0x55,0x55,0x55,0x55,0x8d,0x03,0xe0, - 0xac,0xaa,0xaa,0xaa,0xaa,0x1a,0x07,0x70,0x56,0x55,0x55,0x55,0x55,0x35,0x0e, - 0x38,0xab,0xaa,0xaa,0xaa,0xaa,0x6a,0x1c,0x9c,0x55,0x55,0x55,0x55,0x55,0xd5, - 0x38,0xce,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x71,0x67,0x55,0x55,0x55,0x55,0x55, - 0x55,0xe3,0xb3,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xc6,0x53,0x55,0x55,0x55,0x55, - 0x55,0x55,0xcd,0xb3,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xca,0x53,0x55,0x55,0x55, - 0x55,0x55,0x55,0xcd,0xb3,0xfe,0xfb,0xff,0xfb,0xab,0xff,0xca,0x53,0x03,0x0d, - 0x00,0x0d,0x54,0x80,0xcd,0xb3,0x01,0x0a,0x00,0x07,0x68,0x00,0xcb,0xd3,0x78, - 0xf4,0xf9,0xe3,0x51,0x3e,0xce,0xb3,0xac,0xac,0xa9,0xb2,0x72,0x6a,0xca,0xd3, - 0xd4,0x54,0x59,0x53,0x53,0x56,0xce,0xb3,0xac,0xaf,0xa9,0xb2,0x72,0x6a,0xca, - 0xd3,0x54,0x55,0x59,0x53,0x53,0x56,0xce,0xb3,0xf8,0xaa,0xa9,0xb2,0x72,0x3e, - 0xca,0x53,0x01,0x55,0x59,0x53,0x53,0x00,0xcd,0xb3,0x02,0xaa,0xa9,0xb2,0x72, - 0x80,0xca,0x53,0x7d,0x54,0x59,0x53,0x53,0x7e,0xcd,0xb3,0xaa,0xac,0xa9,0xb2, - 0x72,0xaa,0xca,0x53,0xd7,0x54,0x59,0x53,0x53,0x56,0xcd,0xb3,0xac,0xac,0xa9, - 0xb2,0x72,0xaa,0xca,0xd3,0xd4,0x54,0x59,0x53,0x53,0x56,0xcd,0xb3,0x78,0xac, - 0xa9,0xe2,0x71,0xaa,0xca,0x53,0x01,0x56,0x59,0x05,0x58,0x56,0xcd,0xb3,0x02, - 0xab,0xa9,0x0a,0x6c,0xaa,0xca,0x53,0xfd,0x55,0x5f,0xf5,0xd7,0x55,0xcd,0xb3, - 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xca,0x63,0x55,0x55,0x55,0x55,0x55,0x55,0xcd, - 0xc7,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xe6,0x8e,0x55,0x55,0x55,0x55,0x55,0x55, - 0x73,0x1c,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0x39,0x38,0x56,0x55,0x55,0x55,0x55, - 0xd5,0x1c,0x70,0xac,0xaa,0xaa,0xaa,0xaa,0x6a,0x0e,0xe0,0x58,0x55,0x55,0x55, - 0x55,0x35,0x07,0xc0,0xb1,0xaa,0xaa,0xaa,0xaa,0x9a,0x03,0x80,0x63,0x55,0x55, - 0x55,0x55,0xcd,0x01,0x00,0xc7,0xaa,0xaa,0xaa,0xaa,0xe6,0x00,0x00,0x8e,0x55, - 0x55,0x55,0x55,0x73,0x00,0x00,0x1c,0xab,0xaa,0xaa,0xaa,0x39,0x00,0x00,0x38, - 0x56,0x55,0x55,0xd5,0x1c,0x00,0x00,0x70,0xac,0xaa,0xaa,0x6a,0x0e,0x00,0x00, - 0xe0,0x58,0x55,0x55,0x35,0x07,0x00,0x00,0xc0,0xf1,0xff,0xff,0x9f,0x03,0x00, - 0x00,0x80,0x03,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0xe0,0x00, - 0x00,0x00,0x00,0xfe,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x3f, - 0x00,0x00}; diff --git a/x-symbol/lisp/x-symbol-myuc.el b/x-symbol/lisp/x-symbol-myuc.el deleted file mode 100644 index 6fb5030b..00000000 --- a/x-symbol/lisp/x-symbol-myuc.el +++ /dev/null @@ -1,118 +0,0 @@ -;;; x-symbol-myuc.el --- example token language "My Unicode" from manual - -;; Copyright (C) 1998-1999 Christoph Wedler -;; -;; Author: Christoph Wedler <wedler@users.sourceforge.net> -;; Maintainer: (Please use `M-x x-symbol-package-bug' to contact the maintainer) -;; Version: 4.1 -;; Keywords: WYSIWYG, LaTeX, HTML, wp, math, internationalization -;; X-URL: http://x-symbol.sourceforge.net/ - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. -;; -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -;;; Commentary: - -;; If you want to use package x-symbol, please visit the URL (use -;; \\[x-symbol-package-web]) and read the info (use \\[x-symbol-package-info]). -;; This file defines the example token language "My Unicode" from the manual of -;; package X-Symbol. - -;; The following lines define the major mode `myuc-mode': - -;;(put 'myuc-mode 'font-lock-defaults '(myuc-font-lock-keywords t t)) -;;(defvar myuc-font-lock-keywords '(("##" (0 font-lock-type-face)))) -;;(defun myuc-mode () -;; (interactive) -;; (fundamental-mode) -;; (setq mode-name "MyUnicode") -;; (setq major-mode 'myuc-mode)) -;;(push '("\\.myuc\\'" . myuc-mode) auto-mode-alist) - -;; Put the following code into your ~/.emacs to register language `myuc': - -;;(defvar x-symbol-myuc-name "My Unicode") -;;(defvar x-symbol-myuc-modes '(myuc-mode)) -;;(x-symbol-register-language 'myuc 'x-symbol-myuc x-symbol-myuc-modes) - -;;; Code: - -(provide 'x-symbol-myuc) -(require 'x-symbol-vars) -;; If you want to make the file compilable without X-Symbol, you could use the -;; following instead (require 'x-symbol-vars): -;; (custom-add-load 'x-symbol-myuc 'x-symbol-vars) -(eval-when-compile (require 'cl)) - - -(defvar x-symbol-myuc-required-fonts nil) - -(defvar x-symbol-myuc-modeline-name "myuc") -(defvar x-symbol-myuc-header-groups-alist nil) - -(defvar x-symbol-myuc-class-alist - '((VALID "My Unicode" (x-symbol-info-face)) - (INVALID "no My Unicode" (x-symbol-emph-info-face)))) -(defvar x-symbol-myuc-class-face-alist nil) -(defvar x-symbol-myuc-electric-ignore nil) - -(defvar x-symbol-myuc-font-lock-keywords nil) -(defvar x-symbol-myuc-image-keywords nil) -(defvar x-symbol-myuc-master-directory 'ignore) -(defvar x-symbol-myuc-image-searchpath '("./")) -(defvar x-symbol-myuc-image-cached-dirs '("images/" "pictures/")) -(defvar x-symbol-myuc-image-file-truename-alist nil) - -(defvar x-symbol-myuc-case-insensitive 'upcase) -(defvar x-symbol-myuc-token-shape '(?# "#[0-9A-Fa-f]+\\'" . "[0-9A-Fa-f]")) -(defvar x-symbol-myuc-exec-specs '(nil (nil . "#[0-9A-Fa-f]+"))) -(defvar x-symbol-myuc-input-token-ignore nil) - -(defun x-symbol-myuc-default-token-list (tokens) - (list (format "#%X" (car tokens)))) - -(defvar x-symbol-myuc-token-list 'x-symbol-myuc-default-token-list) -(defvar x-symbol-myuc-user-table nil) - -(defvar x-symbol-myuc-xsymb0-table - '((alpha () 945) - (beta () 946))) - -(defvar x-symbol-myuc-table - (append x-symbol-myuc-user-table x-symbol-myuc-xsymb0-table)) - - -;;;=========================================================================== -;;; Internal -;;;=========================================================================== - -(defvar x-symbol-myuc-menu-alist nil - "Internal. Alist used for MyUc specific menu.") -(defvar x-symbol-myuc-grid-alist nil - "Internal. Alist used for MyUc specific grid.") - -(defvar x-symbol-myuc-decode-atree nil - "Internal. Atree used by `x-symbol-token-input'.") -(defvar x-symbol-myuc-decode-alist nil - "Internal. Alist used for decoding of MyUc macros.") -(defvar x-symbol-myuc-encode-alist nil - "Internal. Alist used for encoding to MyUc macros.") - -(defvar x-symbol-myuc-nomule-decode-exec nil - "Internal. File name of MyUc decode executable.") -(defvar x-symbol-myuc-nomule-encode-exec nil - "Internal. File name of MyUc encode executable.") - -;;; Local IspellPersDict: .ispell_xsymb -;;; x-symbol-myuc.el ends here diff --git a/x-symbol/lisp/x-symbol-site.el b/x-symbol/lisp/x-symbol-site.el deleted file mode 100644 index 5096ef34..00000000 --- a/x-symbol/lisp/x-symbol-site.el +++ /dev/null @@ -1,75 +0,0 @@ -;;; x-symbol-site.el --- sample customization of package x-symbol - -;; Copyright (C) 1996-1998 Free Software Foundation, Inc. -;; -;; Author: Christoph Wedler <wedler@users.sourceforge.net> -;; Maintainer: (Please use `M-x x-symbol-package-bug' to contact the maintainer) -;; Version: 3.4 -;; Keywords: WYSIWYG, LaTeX, HTML, wp, math, internationalization -;; X-URL: http://x-symbol.sourceforge.net/ - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. -;; -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -;;; Commentary: - -;; If you want to use package x-symbol, please visit the URL (use -;; \\[x-symbol-package-web]) and read the info (use \\[x-symbol-package-info]). - -;; This file contains the elisp code for the installation of package x-symbol. -;; Copy the first lines of the code, which are also mentioned in the -;; installation instructions, into your `~/.emacs' or `default.el'. The direct -;; use of this file via `(load "x-symbol-site")' is deprecated. - -;;; Code: - -;;(setq x-symbol-data-directory (expand-file-name "~/.xemacs/etc/x-symbol/")) -(unless (featurep 'mule) (setq x-symbol-compose-key '(multi-key))) -(require 'x-symbol-hooks) -(x-symbol-initialize) - -;; Use GNUs make for creation of executables: -;;(defvar x-symbol-exec-compile-command "gmake -k") - -;; Do not expand \FROM to \TO if we have an abbreviation from FROM to TO: -;;(custom-set-variables '(words-include-escapes t)) - -;; Set this if your normal font does not have registry iso8859-1: -;;(setq x-symbol-default-coding 'iso-8859-2) ; but not with Mule! - -;; If you run x-symbol on tty, but never use \usepackage[latinN]{inputenc} -;; where N does not correspond to your "normal" font (e.g., if you only use -;; \usepackage[latin1]{inputenc}): -;;(setq x-symbol-latin-force-use nil) - -;; If you would use XEmacs/Mule just for package X-Symbol -;;(setq x-symbol-mule-change-default-face t) - -;; psgml-html: -;;(setq html-auto-sgml-entity-conversion nil) ; the default - -;; If you `isearch' for x-symbol characters, it is a good idea to remove any -;; font property from the `isearch' face (the same for highlight), this could -;; be a problem with B/W monitors: ------------------------------------------- -(remove-specifier (get (get-face 'isearch) 'font)) -(set-face-foreground 'isearch "white" nil '(mono)) -(set-face-background 'isearch "black" nil '(mono)) -(remove-specifier (get (get-face 'highlight) 'font)) -(set-face-underline-p 'highlight t nil '(mono)) -;; Check also the faces `primary-selection', `secondary-selection', -;; `underline', `paren-match', `paren-blink-off', `paren-mismatch'. Thanks to -;; Solofo Ramangalahy <solofo@mpi-sb.mpg.de> for this list. - -;;; Local IspellPersDict: .ispell_xsymb -;;; x-symbol-site.el ends here diff --git a/x-symbol/man/x-symbol.texi-exp b/x-symbol/man/x-symbol.texi-exp deleted file mode 100644 index fbcd4201..00000000 --- a/x-symbol/man/x-symbol.texi-exp +++ /dev/null @@ -1,7493 +0,0 @@ -\input texinfo -@c Copyright (C) 1998-2003 Free Software Foundation, Inc. -@c -@c Author: Christoph Wedler <wedler@users.sourceforge.net> -@c Maintainer: (Please use `M-x x-symbol-package-bug' to contact the maintainer) -@c Keywords: WYSIWYG, LaTeX, HTML, wp, math, internationalization -@c X-URL: http://x-symbol.sourceforge.net/ - -@c %**start of header -@setfilename x-symbol.info -@settitle X-Symbol Manual -@setchapternewpage odd - -@set edition 4.4.5 -@set version 4.4.5 -@set update January 2003 -@set http http://x-symbol.sourceforge.net -@set maintainer wedler@@users.sourceforge.net - -@c for cross references to other manuals -@ifset GNU -@set subedition Emacs -@set emacs emacs -@set emacsman GNU Emacs Manual -@end ifset - -@ifclear GNU -@set subedition XEmacs -@set emacs xemacs -@set emacsman XEmacs User's Manual -@end ifclear - -@set auctex auctex -@set auctexman AUC@TeX{} - -@set reftex reftex -@set reftexman Ref@TeX{} User Manual - -@set kpathsea kpathsea -@set kpathseaman Kpathsea Manual - - -@syncodeindex fn vr -@c %**end of header -@dircategory Editors -@direntry -* X-Symbol:: Semi WYSIWYG for LaTeX, HTML and other "token languages" -@end direntry - -@ifinfo -This file documents X-Symbol, a package providing semi-@sc{wysiwyg} for -La@TeX{}, HTML and other ``token languages''. It uses additional fonts -and provide input methods to insert their characters into your document. - -This is Edition 4.4.5 (XEmacs) of the X-Symbol -Manual for X-Symbol 4.4.5, January 2003. - -Copyright (c) 1998-2003 Free Software Foundation, Inc. - -@c default -Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - -@ignore -Permission is granted to process this file through TeX and print the -results, provided the printed document carries a copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). - -@end ignore -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that the -sections entitled ``Copying'' and ``GNU General Public License'' are -included exactly as in the original, and provided that the entire -resulting derived work is distributed under the terms of a permission -notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation -approved by the Free Software Foundation. -@c end default -@end ifinfo - -@finalout -@titlepage -@title X-Symbol Manual -@subtitle Semi-@sc{wysiwyg} for La@TeX{}, HTML and other ``token languages'' -@subtitle Edition 4.4.5 (XEmacs), for X-Symbol 4.4.5, January 2003 -@author by Christoph Wedler - -@page -@vskip 0pt plus 1filll -Copyright @copyright{} 1998-2003 Free Software Foundation, Inc. - -@c default (slight change) -Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the -entire resulting derive work is distributed under the terms of a -permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation -approved by the Free Software Foundation. -@c end default - -@end titlepage - -@c =========================================================================== - -@ifinfo -@node Top, Introduction, (dir), (dir) -@comment node-name, next, previous, up -@top X-Symbol - -When you edit La@TeX{}, HTML, BibTeX or @TeX{}info sources in Emacs, -package X-Symbol provides some kind of @sc{wysiwyg} by using real -characters for tokens like @code{\oplus} or @code{™}. It also -provides various input methods to insert these characters. Thumbnails -for included images and real super-/subscripts and are also supported. - -The first part of this master menu lists the major nodes in this Info -document, including the indexes. The rest of the menu lists all the -lower level nodes in the document. - -This is Edition 4.4.5 of the X-Symbol Manual for X-Symbol -4.4.5, January 2003. For recent changes, see @ref{News}. - -Bug fixes, bug reports, improvements, and suggestions are strongly -appreciated. Please read section @ref{Bug Reports} if you want to -contact the maintainer of package X-Symbol. -@end ifinfo - -@menu -* Introduction:: Introduction to X-Symbol. -* Installation:: What to do before using package X-Symbol. -* Concepts:: Token language, conversion, coding, etc. -* Input Methods:: How to insert X-Symbol characters. -* Features:: Super-/subscripts, images, info, etc. -* Supported Languages:: Details of the predefined token languages. -* X-Symbol Internals:: How package X-Symbol works. -* Problems:: Annoyances, contacting the maintainer. -* History:: Changes, wishlist, projects. -* Indexes:: Menus covering various topics. - -@detailmenu - --- The Detailed Node Listing --- - -Introduction - -* Copying:: X-Symbol is GPL'd. -* Summary:: A brief summary of package X-Symbol. -* About:: About this manual. - -Installation - -* Requirements:: Which programs you need for X-Symbol. -* Installing Files:: Basics 1: Put the files into your home dir. -* System-wide Installation:: Alternative: Put the files into the XEmacs dir. -* Installing Lisp:: Basics 2: Initialize X-Symbol during startup. -* Installing Image Converter:: Recommended: How to install @code{convert}. -* Package Integration:: How X-Symbol interacts with other packages. -* Installing Fonts:: Optional: What to do when using other fonts. -* Installing Fonts Exceed:: If appropriate: What to do when using Exceed. -* Installing Fonts Lisp:: If appropriate: Lisp coding for other fonts. -* Installing Manual:: Optional: How to create the manual. -* Checking Installation:: Is package X-Symbol completely installed? - -Package Integration - -* LaTeX Packages:: Packages used in La@TeX{} buffers. -* Syntax Hiliting Packages:: Package @code{font-lock} and support modes. -* File IO Packages:: Compression, encryption, remote files, etc. -* Miscellaneous Packages:: Other packages. - -Concepts of Package X-Symbol - -* Token Language:: What does a X-Symbol character represent. -* Conversion:: Decoding tokens, encoding characters. -* Minor Mode:: How to control the behavior of X-Symbol. -* Poor Mans Mule:: Running X-Symbol under XEmacs/no-Mule. -* Role of font-lock:: Why does X-Symbol need @code{font-lock}. -* Char Group:: Character group and token classes. - -Conversion: Decoding and Encoding - -* Default Coding:: Encoding of your default charset. -* File Coding:: Specific encoding of a file. -* Controlling 8bit Coding:: Do you want to store 8bit characters? -* Unique Decoding:: Restrict decoding to avoid normalization? -* Conversion Commands:: Interactive encoding and decoding. -* Copy with Conversion:: Copy & paste with conversion. -* Char Aliases:: Different charsets include the same chars. - -X-Symbol's Input Methods - -* Introducing Input Methods:: Common behavior of all input methods. -* Input Method Token:: Replace token by character. -* Input Method Read Token:: Minibuffer input with completion. -* Input Method Menu:: Select a menu item. -* Input Method Grid:: Choose highlighted character. -* Input Method Keyboard:: Compose a key sequence. -* Input Method Context:: Replace character sequence. -* Input Method Electric:: Automatically replace character sequence. -* Input Method Quail:: A Mule input method "x-symbol". -* Customizing Input Method:: How to customize the input methods. - -Features of Package X-Symbol - -* Super and Subscripts:: Use special fonts for super-/subscripts. -* Images:: Images after image insertion commands. -* Info:: Display information in echo area. -* Ascii Representation:: Derive label from a buffer contents. -* Package Information:: Invoke info system, use WWW browser. - -Images at the end of Image Insertion Commands - -* Image Display:: When to display images. -* Image Conversion:: Producing a scaled-down image. -* Image Caching:: Speeding up the image processing. -* Special Images:: Signaling specific situations. -* Image Editor:: Editing the original image file. - -Supported Token Languages - -* Pseudo Language:: Token language ``x-symbol charsym''. -* TeX Macro:: Token language @code{tex}. -* SGML Entity:: Token language @code{sgml}. -* BibTeX Macro:: Token language @code{bib}. -* TeXinfo Command:: Token language @code{texi}. -* External Languages:: Languages defined in other Emacs Packages. - -Token Language ``@TeX{} macro'' (@code{tex}) - -* TeX Macro Basics:: Basics of language ``@TeX{} macro''. -* TeX Macro Features:: Super-/subscripts and images in La@TeX{}. -* TeX Macro Problems:: Problems with @TeX{} macros. -* TeX Macro Conversion:: How the conversion of @TeX{} macros works. -* TeX Macro Symbols:: Extra Symbols of Language ``@TeX{} Macro''. - -Token Language ``@sc{sgml} entity'' (@code{sgml}) - -* SGML Entity Basics:: Basics of Language ``@sc{sgml} entity''. -* SGML Entity Features:: Super-/Subscripts and Images in @sc{html}. -* SGML Entity Conversion:: How the conversion of @sc{sgml} entities works. - -X-Symbol Internals - -* Char Representation:: How X-Symbol represents X-Symbol chars. -* Defining Charsets:: How X-Symbol defines additional chars. -* Defining Input Methods:: How X-Symbol defines the input methods. -* Extending X-Symbol:: How to add fonts and token languages. -* Various Internals:: How X-Symbol handles other aspects. -* Design Alternatives:: Why X-Symbol is not designed differently. -* Language Internals:: How X-Symbol handles languages. -* Misc Internals:: Various. TODO. - -Defining Input Methods - -* Input Method Objectives:: Input methods should be intuitive/consistent. -* Intro Char Descriptions:: An example introducing char descriptions. -* Char Descriptions:: The aspects and the contexts of a character. -* Example Char Descriptions:: A complete example defining input methods. -* Customizing Input Methods:: How to customize the input methods. - -Extending Package X-Symbol - -* Extending with Fonts:: How to add fonts to X-Symbol. -* Input Definitions:: Guidelines for input definitions. -* Font Definition File:: How to define new character in a file. -* Language Extension File:: Extending an existing language. -* Language Definition File:: Defining a new language. - -Various Internals - -* Tagging Insert Commands:: Don't break input methods Token and Electric. -* Avoiding Flickering:: Moving cursor in invisible commands. - -Design Alternatives - -* Alt Token Representations:: Why we need the conversion. -* Alt Global Mode:: How to turn on X-Symbol globally. -* Alt Auto Conversion:: When do we convert automatically. - -Problems, Troubleshooting - -* Nomule Problems:: X-Symbol provides a @emph{poor} man's Mule. -* Spurious Encodings:: Some commands turn off X-Symbol mode. -* No Encoding:: The encoding does not work in a rare case. -* FAQ:: Frequently asked questions. -* Bug Reports:: How to contact the maintainer of X-Symbol. - -Frequently Asked Questions - -* FAQ XEmacs Core:: XEmacs crashes when using input method Token -* FAQ font-lock:: X-Symbol's fontification does not work. -* FAQ Strange Chars:: The buffer contains strange characters -* FAQ No Subscripts:: I cannot see any/some super-/subscripts. -* FAQ Stupid Subscripts:: I see subscripts where I don't want them. -* FAQ Font Size:: The characters are too small or too big. -* FAQ Conversion:: The conversion changes some tokens. -* FAQ Additional Spaces:: A space is added during the encoding. -* FAQ 8bit Chars:: I do not want 8bit characters in the file. -* FAQ Hyphen:: I cannot distinguish @code{hyphen} from @samp{-}. -* FAQ Spell Check:: I have problems with spell-checking. - -History and Projects - -* News:: Changes in recent versions. -* Wishlist:: Projects for X-Symbol. -* Open Questions:: How you can contribute. -* Acknowledgments:: People having contributed. - -News: Changes in Recent Versions of X-Symbol - -* Changes New:: To be announced. -* Changes 4.4:: Released June 2002 as beta. -* Changes 4.1:: Released Mar 2002 as beta. -* Changes 3.4:: Released Mar 2002. -* Changes 3.3:: Released Jan 1999. -* Changes 3.2:: Released Dec 1998. -* Changes 3.1:: Released Oct 1998. -* Changes 3.0:: Released Sep 1998 as beta. -* Changes Old:: Overview of old releases. - -Wishlist: Projects for X-Symbol - -* Wishlist Languages:: Additional token languages. -* Wishlist Fonts:: Automatically generated fonts. -* Wishlist Emacs:: Changes in Emacs/XEmacs. -* Wishlist LaTeX:: Changes in La@TeX{}. -* Wishlist Various:: Other changes. -* Wishlist Rejected:: Rejected Suggestions for X-Symbol. - -Indexes - -* Key Index:: Key sequences. -* Program Index:: Programs and Emacs packages. -* Variable Index:: Commands, functions, variables. -* Concept Index:: Various topics. - -@end detailmenu -@end menu - -@c =========================================================================== - -@node Introduction, Installation, Top, Top -@comment node-name, next, previous, up -@chapter Introduction -@cindex Overview -@cindex Introduction - -When you edit La@TeX{}, HTML, BibTeX or @TeX{}info sources in Emacs, -package X-Symbol provides some kind of @sc{wysiwyg} by using real -characters for tokens like @code{\oplus} or @code{™}. It also -provides various input methods to insert these characters. Thumbnails -for included images and real super-/subscripts and are also supported. - -@menu -* Copying:: X-Symbol is GPL'd. -* Summary:: A brief summary of package X-Symbol. -* About:: About this manual. -@end menu - -@c ==================================================================== - -@node Copying, Summary, Introduction, Introduction -@comment node-name, next, previous, up -@section X-Symbol's Copying Conditions: GPL -@cindex Copying -@cindex Copyright -@cindex GPL -@cindex General Public License -@cindex License -@cindex Warranty - -(This text is stolen from the @TeX{}info manual, Edition 4.0). - -The programs currently being distributed that relate to X-Symbol include -Emacs lisp files and X11 font files. These programs are @dfn{free}; -this means that everyone is free to use them and free to redistribute -them on a free basis. The X-Symbol related programs are not in the -public domain; they are copyrighted and there are restrictions on their -distribution, but these restrictions are designed to permit everything -that a good cooperating citizen would want to do. What is not allowed -is to try to prevent others from further sharing any version of these -programs that they might get from you. - -Specifically, we want to make sure that you have the right to give away -copies of the programs that relate to X-Symbol, that you receive source -code or else can get it if you want it, that you can change these -programs or use pieces of them in new free programs, and that you know -you can do these things. - -To make sure that everyone has such rights, we have to forbid you to -deprive anyone else of these rights. For example, if you distribute -copies of the X-Symbol related programs, you must give the recipients -all the rights that you have. You must make sure that they, too, -receive or can get the source code. And you must tell them their -rights. - -Also, for our own protection, we must make certain that everyone finds -out that there is no warranty for the programs that relate to X-Symbol. -If these programs are modified by someone else and passed on, we want -their recipients to know that what they have is not what we distributed, -so that any problems introduced by others will not reflect on our -reputation. - -The precise conditions of the licenses for the programs currently being -distributed that relate to X-Symbol are found in the General Public -Licenses that accompany them. - -@c ==================================================================== - -@node Summary, About, Copying, Introduction -@comment node-name, next, previous, up -@section Brief Summary of X-Symbol -@cindex Summary -@cindex Brief Summary -@cindex X-Symbol in a Nutshell - -@itemize @bullet -@item -X-Symbol provides a @strong{minor mode} which make use of characters in -the Latin-1, Latin-2, Latin-3, Latin-5, and Latin-9 font (179 chars + -294 char aliases), the Adobe symbol font (109 chars) and the xsymb1 font -(165 chars, distributed with the package). Additional fonts could be -used easily. - -@item -These characters are used in the buffer to represent @strong{tokens} -(e.g., @TeX{} macros, @sc{sgml} entities, more ``token languages'' could be -added easily) in the file. The @emph{conversion} is done automatically -when visiting the file, saving the buffer and turning the minor mode -on/off. - -@item -Defines 8 @strong{input methods} for these characters: @emph{Menu}, -@emph{Grid} (selecting a character with the mouse), @emph{Keyboard}, -@emph{Context} (replace/modify similar-looking char sequence), -@emph{Electric} (automatic replace), @emph{Quail} (a Mule input method), -@emph{Token} (replace token by corresponding char), @emph{Read Token} -(completing minibuffer input of token). - -@item -Offers some @strong{info} in the echo area for these characters (e.g., -that the character under point represents the TeX macro @code{\leadsto} -and that the macro is defined in La@TeX{} package @file{latexsym.sty}). - -@item -Allows to use a @strong{8bit file encoding} which is different from your -"normal" 8bit file encoding, e.g., you can visit @TeX{} files with -@code{\usepackage[latin5]@{inputenc@}} even if you normally use a Latin-2 -font. - -@item -Provides a kind of ``@strong{poor man's Mule}'' when running on an -XEmacs without Mule support: it can @emph{display} more than 256 -characters via @code{font-lock} and removes most annoyances resulting -from the fact that, without Mule support, many ``X-Symbol characters'' -are actually a sequence of two chars. - -@item -Provides fonts for single-line innermost @strong{super-} and -@strong{subscripts} to be displayed with per-buffer control. The -invisible part, like @code{<sub>} in HTML, is revealed at point. - -@item -Displays thumbnails for @strong{images} at the end of image insertion -commands with per-buffer control (e.g., -@code{\includegraphics@{@var{file}@}} in La@TeX{}, @code{<img -src=@var{file}>} in HTML). They show a scaled-down version of the -included image files (using @code{convert} from -@uref{http://www.imagemagick.org/,ImageMagick}). A single mouse click -on the image or command invokes the image editor for the corresponding -image file. - -@item -It @emph{does not} and @emph{will not} provide commands to hide (more or -less) uninteresting parts of your document or fontify them differently. -This is more the task of the corresponding major mode or -@code{font-lock}, e.g., @code{font-latex}. (I admit, the support of -super- and subscripts might let you think that this is a good point for -the todo list of package X-Symbol.) Using @code{outline-minor-mode} or -folding might also be an alternative. -@end itemize - -If you prefer a more @sc{wysiwyg}-like document processor, you should -probably use @code{LyX} or @code{GNU TeXmacs}. Here are some reasons -why you would use Emacs/XEmacs with package X-Symbol instead: - -@itemize @bullet -@item -You have complete control over the La@TeX{} source. X-Symbol supports -more characters. - -@item -You can read any La@TeX{} source and you write normal La@TeX{} code, -i.e., package X-Symbol does not use any special format. - -@item -It also supports HTML and @TeX{}info documents and BibTeX entries. - -@item -You can use your favorite editor, i.e., Emacs or XEmacs. -@end itemize - -@c ==================================================================== - -@node About, , Summary, Introduction -@comment node-name, next, previous, up -@section About this Manual -@cindex About -@cindex Web Pages -@cindex Info Pages -@cindex Manual -@cindex Online Help - -Apart from this manual, there are two other sources of information about -X-Symbol: - -@itemize @bullet -@item -The web pages of X-Symbol provide a summary of X-Symbol, including some -screen shots. You are strongly encouraged to read them carefully. They -probably provide enough info for the standard user and can be found at: - -@display - @uref{http://x-symbol.sourceforge.net/} -@end display - -@item -The online help for commands (functions) and user options (variables) is -quite technical. It is shown during customization and when using Emacs' -Help menu. -@end itemize - -This manual is somewhere in between: it more detailed than the web pages -and less technical than the online help. For example, when explaining -some functionality, it states the default behavior, gives an impression -of what can be customized, and it even lists all related user options, -but it does not describes the technical format of possible values of -each option. - -Section @ref{X-Symbol Internals} is for the curious reader and for -people who want to define their own token language. - -This manual does not explain Emacs in general or some optional programs -used by this package such as @code{convert} (used to produce the image -thumbnails). It also includes no installation instructions for those -programs and the author of this package will not help you with the -installation of those programs (sorry for that). - -You do not have to learn this manual by heart before sending a question -to the maintainer of X-Symbol, but you should give the impression that -your really have tried to find the necessary information yourself and -spend some time making your report precise. Before sending a problem -report, please read @ref{Bug Reports}. - -@c =========================================================================== - -@node Installation, Concepts, Introduction, Top -@comment node-name, next, previous, up -@chapter Installation -@cindex Installation - -The short version of the installation instructions for package X-Symbol -on XEmacs is: uncompress & extract the @emph{binary distribution} in -directory @file{~/.xemacs/xemacs-packages/}, add -@code{(x-symbol-initialize)} to your @file{~/.emacs} and install -ImageMagick for the image support (unless you want to get a warning). - -Please check the web page @emph{additionally} to the sections here for -the installation instructions for package X-Symbol on Emacs. - -The rest of this chapter contains the long version. I recommend that -you read this chapter completely after a short test of X-Symbol, -especially if you have customized your Emacs more or less heavily or if -you get some problems. - -@menu -* Requirements:: Which programs you need for X-Symbol. -* Installing Files:: Basics 1: Put the files into your home dir. -* System-wide Installation:: Alternative: Put the files into the XEmacs dir. -* Installing Lisp:: Basics 2: Initialize X-Symbol during startup. -* Installing Image Converter:: Recommended: How to install @code{convert}. -* Package Integration:: How X-Symbol interacts with other packages. -* Installing Fonts:: Optional: What to do when using other fonts. -* Installing Fonts Exceed:: If appropriate: What to do when using Exceed. -* Installing Fonts Lisp:: If appropriate: Lisp coding for other fonts. -* Installing Manual:: Optional: How to create the manual. -* Checking Installation:: Is package X-Symbol completely installed? -@end menu - -@c ==================================================================== - -@node Requirements, Installing Files, Installation, Installation -@comment node-name, next, previous, up -@section Requirements -@cindex Requirements -@cindex Binary Package -@cindex Source Package -@cindex Old Version -@cindex Window System -@cindex X -@cindex Windows -@cindex MS-Windows -@cindex Character Terminal -@cindex TTY -@pindex Emacs -@pindex XEmacs - -This development version of package X-Symbol works with Emacs-21.1 or -higher, and XEmacs 20.4 or higher (XEmacs-21.1.9 is strongly -recommended, @ref{FAQ XEmacs Core}), with or without Mule support. - -X-Symbol should work with all window systems Emacs is running under (Mac -is not testet and might not work). Under X, no restrictions apply. -Under Windows with Emacs, images will not be displayed (they are not yet -supported by Emacs under Windows). Under Windows with XEmacs, X-Symbol -just supports a limited number of characters (Latin-1, Latin-5, and half -the math symbols) and no super- and subscripts, due to missing -MS-Windows fonts (@pxref{Wishlist Fonts}). Under a character terminal, -X-Symbol just supports Latin-1 characters only, no super- and subscripts -and no images. - -@pindex font-lock -@pindex lazy-shot -@pindex texmathp -@pindex auctex -This package require package @code{font-lock} (distributed with Emacs -and XEmacs), the use of package @code{lazy-shot} is recommended, see -@ref{Syntax Hiliting Packages}. - -@pindex convert -If you want to see the images at the end of image insertion commands, -install @code{convert} from -@uref{http://www.imagemagick.org/,ImageMagick}, -see @ref{Installing Image Converter}. They show a scaled-down version -of the included image files. - -@pindex makeinfo -@pindex texi2dvi -@pindex latex2html -If you want to produce the Info files yourself (they are included in the -binary distribution), you need @code{makeinfo}, Version 1.68 or higher. -If you want to produce a PS file from the manual, you need -@code{texi2dvi}. If you want to produce an HTML version of this manual, -you need @code{texi2html}, Version 1.62 or higher. @xref{Installing -Manual}. - - -@c ==================================================================== - -@node Installing Files, System-wide Installation, Requirements, Installation -@comment node-name, next, previous, up -@section Put the Files into your Home Directory -@cindex Basic Installation -@cindex Uncompress Tarball -@cindex Extract Tarball -@cindex Tarball -@cindex Binary Distribution - -If you use Emacs, please check the @uref{http://x-symbol.sourceforge.net/news.html, web -pages of X-Symbol}. - -In this section, we assume that you want to install the binary -distribution (also called the binary tarball) of package X-Symbol in -your home directory. To install it somewhere below the XEmacs root (it -might be already there), see @ref{System-wide Installation}. If you use -the source distribution, you should know what do to instead. - -In directory @file{~/.xemacs/xemacs-packages/}, run -@example -zcat x-symbol-pkg.tar.gz | tar xvf - -@end example - -Remember that @code{tar} does not overwrite write-protected files. - -X-Symbol's @file{pcf} files and font directory must be world-readable -since you do not own the X11 font server process. You are on the safe -side, if you run -@example -chmod -R a+rx ~/.xemacs/xemacs-packages -@end example - -If package X-Symbol has been installed system-wide and you install a -newer version in your @file{~/.xemacs/xemacs-packages/}, you get a warning during -XEmacs' startup (autoload error: already loaded). You can safely ignore -this warning, but there is unfortunately no good way to get rid of it. -Yes, XEmacs' packaging system is excellent, but there is still a place -for improvements@dots{}. - -Before XEmacs-21.0: the user package directory was @file{~/.xemacs/} -instead of @file{~/.xemacs/packages/}; also: delete and recompile the -@file{.elc} files. - -@c ==================================================================== - -@node System-wide Installation, Installing Lisp, Installing Files, Installation -@comment node-name, next, previous, up -@section System-wide Installation: Put the Files into the XEmacs Directory -@cindex System-wide Installation -@cindex Installing System-wide -@cindex @file{default.el} -@cindex @file{site-start.el} - -You can skip this section if your have installed X-Symbol in your home -directory according to the previous section. - -If you install package X-Symbol system-wide, use @file{default.el} and -@file{@var{xemacs}/site-packages/} whenever @file{~/.emacs} and -@file{~/.xemacs/xemacs-packages/} are mentioned in the previous or -following subsections. @file{@var{xemacs}/site-packages/} is the -directory of independent packages for XEmacs. - -Under XEmacs-21, you can uncompress and extract the tarball by - -@example -M-x package-admin-add-binary-package @key{RET} @var{dir}/x-symbol-pkg.tar.gz -@end example - -Then, @file{@var{xemacs}/} is the default directory of buffer -@file{*Package Output*} (use @kbd{C-x C-f} in that buffer to see it). -It might be @file{/usr/local/lib/xemacs/xemacs-packages/} (the first -element in variable @code{late-packages}). - -Under XEmacs-20, @file{@var{xemacs}/} might be -@file{/usr/local/lib/xemacs-@var{version}/}. Here, you have to -uncompress and extract the tarball as described in @ref{Installing -Files}. You also have to load the autoload file explicitly by putting -the following line into file @file{site-start.el}: - -@lisp -(load "@var{xemacs}/lisp/x-symbol/auto-autoloads") -@end lisp - -I would appreciate if you would set the following variables: - -@vtable @code -@item x-symbol-installer-address -Please set this variable to your email address to catch problems which -could be solved locally. In your private @file{~/.emacs}, you might -want to set this variable to @code{nil}. - -@item x-symbol-package-url -If you have a local copy of the web pages (@pxref{Installing Manual}), set -this variable to the corresponding @sc{url}. -@end vtable - -@c ==================================================================== - -@node Installing Lisp, Installing Image Converter, System-wide Installation, Installation -@comment node-name, next, previous, up -@section Make XEmacs Initialize X-Symbol During Startup -@cindex Installing Lisp -@cindex Lisp Installation -@cindex Elisp Installation -@cindex @file{.emacs} -@findex x-symbol-initialize - -Put the following into your @file{~/.emacs} (or @file{~/.xemacs/init.el}): - -@lisp -(x-symbol-initialize) -@end lisp - -Basically, that's it! If your XEmacs runs on a different machine, check -@ref{Installing Fonts}. - -If you get a warning about X-Symbol not being able to deduce a default -encoding (or about limited support with XEmacs under Windows or a -character terminal, @ref{Requirements}), set the default coding -(@pxref{Default Coding}) by putting the following in front of the line -above: - -@lisp -(setq x-symbol-default-coding 'iso-8859-1) -@end lisp - -When running Emacs under a character terminal, you might need to use the -following (with or without X-Symbol): - -@lisp -(unless window-system (standard-display-european 1)) -@end lisp - -If your character terminal does not support Latin characters, there is -no reason to use package X-Symbol. In this case, use the following -instead: - -@lisp -(when window-system (x-symbol-initialize)) -@end lisp - -The initialization can be controlled by the following variable: - -@vtable @code -@item x-symbol-initialize -By default, package X-Symbol does a full initialization. This includes -an integration with some packages, see also @ref{Package Integration}. -@end vtable - -If you use a B/W monitor and XEmacs/no-Mule, it might be necessary to -remove the font properties of any face which is used on regions with -X-Symbol characters: @code{isearch}, @code{highlight}, -@code{primary-selection}, @code{secondary-selection}, -@code{paren-match}, @code{paren-mismatch}, @code{paren-blink-off}, -@code{underline}. I.e., for each @var{face}, use: - -@lisp -(remove-specifier (get (get-face '@var{face}) 'font)) -@end lisp - -@c ==================================================================== - -@node Installing Image Converter, Package Integration, Installing Lisp, Installation -@comment node-name, next, previous, up -@section Installing the Image Converter from ImageMagick -@cindex Installing Image Converter -@cindex Installing @code{convert} -@cindex Image Converter Installation -@cindex @code{convert} Installation - -@pindex convert -Program @code{convert} from ImageMagick is used to display images at the -end of image insertion commands. The images show a scaled-down version -of the included image files. - -@vindex x-symbol-image-converter -While the installation of @code{convert} is optional, you get a warning -if @code{convert} is not found on your system or if there is no image -format supported by both @code{convert} and Emacs. Set variable -@code{x-symbol-image-converter} to @code{nil} if you don't want to get -the warning. - -@vindex x-symbol-image-convert-program -On Unix, @code{convert} must be in your @code{$PATH}. On Windows, it is -assumed to be found at @file{C:\ImageMagick\convert}. If this is not -the case, you have to customize the variable -@code{x-symbol-image-convert-program}. - -Check @uref{http://www.imagemagick.org/} for the installation -instructions. Run @samp{convert -h} and @samp{convert -list Format} (in -newer versions of ImageMagick) in your shell to check whether the -installation of ImageMagick was successful. If you have problems, check -the ImageMagick web page for FAQs and mailing lists. -@comment ImageMagick-5.0..5.37 failed to show formats sometimes - -If you do not have a truecolor device (i.e., just 256 colors), package -X-Symbol uses @code{convert} with a colormap by default (@pxref{Image -Conversion}). You might create and use your own colormap instead. It -should be tuned to include the colors you use in Emacs anyway, i.e., the -face colors. - -@c ==================================================================== - -@node Package Integration, Installing Fonts, Installing Image Converter, Installation -@comment node-name, next, previous, up -@section Package Integration -@cindex Package Integration -@cindex Integrating Package -@cindex Other Packages - -You might skip this section when trying package X-Symbol the first time. -Nevertheless, I strongly recommend to read this section if you have -customized your Emacs more or less heavily or if you get some problems. - -Some features of X-Symbol work by hooking itself into existing functions -of Emacs or related packages via predefined hooks. A potential problem -arises if your customization or other packages use the same hooks, or if -other packages assume these hooks not to be used, e.g., some packages -assume the buffer contents to contain the same characters as the -corresponding file. - -This section lists some special adaptation for other packages -(everything is fine if you do not use these packages). It also lists -potential problems in combination with other packages. If you discover -some problems in combination with other packages, please let me know. - -@menu -* LaTeX Packages:: Packages used in La@TeX{} buffers. -* Syntax Hiliting Packages:: Package @code{font-lock} and support modes. -* File IO Packages:: Compression, encryption, remote files, etc. -* Miscellaneous Packages:: Other packages. -@end menu - - -@node LaTeX Packages, Syntax Hiliting Packages, Package Integration, Package Integration -@comment node-name, next, previous, up -@subsection La@TeX{} Packages -@cindex La@TeX{} Packages -@cindex Integrating La@TeX{} Packages - -Objectives: relate positions in buffer to positions in file, do -conversion in master/slave buffers, preserve highlighting, improve input -methods and other things. - -@table @code -@item auctex -@pindex auctex -@pindex texmathp -@findex TeX-next-error -@vindex TeX-translate-location-hook -@findex x-symbol-tex-error-location -Use Version 9.9c or higher, which includes @code{texmathp}. There is -some special X-Symbol adaptation for Auc@TeX{}: - -@itemize @minus -@item -@vindex TeX-master -X-Symbol supports Auc@TeX{}'s multifile documents: it respects the -variable @code{TeX-master} when searching for the file encoding -(@pxref{File Coding}) and when converting image files with relative -names (@pxref{Image Display}). - -@item -@vindex TeX-region-hook -X-Symbol supports Auc@TeX{}'s region commands: it ensures that -characters in @file{_region_.tex} buffer are converted according to the -parent buffer. Initialization changes @code{TeX-region-hook}. Requires -Auc@TeX{}, v9.8a or higher. - -@item -X-Symbol's input method Electric (@pxref{Input Method Electric}) with -token language @code{tex} uses package @code{texmathp}. - -@item -@vindex LaTeX-math-insert-function -Auc@TeX{}'s math mode commands also inserts X-Symbol characters -(@pxref{Mathematics,,, -auctex, -AUC@TeX{}}). -Initialization sets @code{LaTeX-math-insert-function}. Requires -Auc@TeX{}, v9.8a or higher. - -@item -@findex TeX-next-error -@vindex TeX-translate-location-hook -If @TeX{} displays an error message, it also displays the context of the -error position. Auc@TeX{} uses the context to set point to this -position when @kbd{M-x TeX-next-error} is invoked. The former context -are characters in the file, the latter characters in the buffer, -X-Symbol provides the translation. Initialization changes -@code{TeX-translate-location-hook}. -@end itemize - -@item bib-cite -@pindex bib-cite -Use Version 3.0 or higher. Initialization of package X-Symbol changes -the installation of package bib-cite to make X-Symbol's decoding not -overwrite @code{bib-cite}s highlighting of @code{\cite} and friends. - -@item preview-latex -@pindex preview-latex -@findex x-symbol-tex-preview-locations -@TeX{}'s error positions are also used by package @code{preview-latex}, -which was clever enough to reuse the above mentioned hook of Auc@TeX{}. -Unfortunately, that hook is @dots{} and does not allow a fast translation of -error positions, so @code{preview-latex} allows to provide better -variants of functions in that hook. X-Symbol's variant is -@code{x-symbol-tex-preview-locations}. - -@item reftex -@pindex reftex -@vindex reftex-translate-to-ascii-function -Use Version 3.26 or higher. For a workaround for some minor annoyances -with the combination Ref@TeX{}/X-Symbol/Multifile Document, see -@ref{Problems and Work-arounds,,,reftex,Ref@TeX{} User Manual}. By -default, the initialization of package X-Symbol makes Ref@TeX{}'s label -creation use the nicer Asciification of package X-Symbol (@pxref{Ascii -Representation}) by setting @code{reftex-translate-to-ascii-function}. - -@item whizzytex -Use the newest. -@end table - - -@node Syntax Hiliting Packages, File IO Packages, LaTeX Packages, Package Integration -@comment node-name, next, previous, up -@subsection Syntax Highlighting Packages (@code{font-lock} and add-ons) -@cindex Syntax Highlighting Packages -@cindex @code{font-lock} Packages -@cindex Integrating @code{font-lock} Packages - -Objectives: start highlighting after conversion. Highlighting is -needed for super- and subscripts and when using XEmacs without Mule -support. - -@table @code -@item fast-lock -@pindex fast-lock -@vindex fast-lock-save-faces -I recommend to use package @code{lazy-shot} instead. By default, the -initialization of package X-Symbol sets @code{fast-lock-save-faces} to -@code{nil} to make package @code{fast-lock} work with X-Symbol. - -@item font-latex -@pindex font-latex -@vindex font-lock-maximum-decoration -I suggest to set @code{font-lock-maximum-decoration} to value @code{t}, -2 or higher if you do not want to use super- and subscripts in arguments -of @code{\label} and friends. @xref{FAQ Stupid Subscripts}. - -@item font-lock -@pindex font-lock -@vindex font-lock-auto-fontify -Is required by this package (@pxref{Role of font-lock}). I strongly -recommend @emph{not} to turn on font-lock in @emph{any} mode hook, set -@code{font-lock-auto-fontify} to @code{t} instead (this is the default, -anyway). See also @code{lazy-shot}. - -If you turn on font-lock in a mode-hook, visiting a file would become -slower, since X-Symbol mode is usually turned on @emph{after} the -functions in the mode hook have been run, i.e., the fontification is -getting useless if the tokens are automatically decoded. - -@item lazy-lock -@pindex lazy-lock -From XEmacs-20.3 on, the successor is called @code{lazy-shot}. - -@item lazy-shot -@pindex lazy-shot -Is strongly recommended. -@end table - - -@node File IO Packages, Miscellaneous Packages, Syntax Hiliting Packages, Package Integration -@comment node-name, next, previous, up -@subsection File I/O Packages -@cindex File I/O Packages -@cindex I/O Packages -@cindex Remote File Packages -@cindex Compression Packages -@cindex Encryption Packages -@cindex Integrating I/O Packages - -Issue: compression, encryption and so on can be seen as some kind of -conversion. When doing multiple conversion, the sequence matters. - -@table @code -@item ange-ftp -@pindex ange-ftp -See also @code{efs} and @code{jka-compr}. - -@item comint -@pindex comint -@vindex comint-input-sender -The default installation makes @code{comint}s in-/output use X-Symbol's -conversion function. If you set variable @code{comint-input-sender}, -set it before initializing package X-Symbol. - -@item crypt -@pindex crypt -@findex save-buffer -@vindex x-symbol-auto-conversion-method -I recommend to use package @code{jka-compr} instead. @xref{Spurious -Encodings}. @xref{No Encoding}. If you use @code{crypt} and the -character @code{alpha} looks like @samp{\233a} after @code{save-buffer}, -set this variable to @code{slowest}. @xref{Open Questions}. - -@item efs -@pindex efs -XEmacs' version of @code{ange-ftp}. See also @code{jka-compr}. - -@item iso-cvt -@pindex iso-cvt -There is no need to use it. Package X-Symbol already provides the -conversion between Latin-1 characters and ``@TeX{} macros''. Package -X-Symbol does not provide the German and Spanish conversion tables, -though. - -@item iso-sgml -@pindex iso-sgml -There is no need to use it. Package X-Symbol already provides the -conversion between Latin-1 characters and ``@sc{sgml} entities''. -@xref{Miscellaneous Packages}, package @code{psgml-html}. - -@item jka-compr -@pindex jka-compr -Can be used with package X-Symbol, preferred to @code{crypt}. The -following is absolutely necessary (with or without using package -X-Symbol, at least in older Emacsen): load @code{jka-compr} after -@code{efs}/@code{ange-ftp}! - -@item latin-unity -@pindex latin-unity -Can be used with package X-Symbol, functionality is already provided by -X-Symbol for Latin-@{1,2,3,5,9@} characters: remapping (@pxref{Char -Aliases}) and recoding (@pxref{File Coding}). - -@c also ucs-tables.el? should be no problem@dots{} - -@item vc -@pindex vc -@findex vc-next-action -If you use package @code{crypt}, @code{vc-next-action} and friends -encode characters to tokens. @xref{Spurious Encodings}. -@end table - - -@node Miscellaneous Packages, , File IO Packages, Package Integration -@comment node-name, next, previous, up -@subsection Miscellaneous Packages -@cindex Miscellaneous Packages - -@table @code -@item abbrev -@pindex abbrev -On XEmacs without Mule support, I recommend to set variable -@code{words-include-escapes} to @code{t}. @xref{Nomule Problems}. - -@item completion -@pindex completion -Should work with X-Symbol (earlier version of X-Symbol had problems with -input method token). - -@item desktop -@pindex desktop -XEmacs' version (an old one) does not save its @file{.emacs.desktop} -files with a coding system. Emacs' version save it with an incorrect -coding system. Thus, strings which contain X-Symbol's private -characters might get corrupted. See also package @code{session} below. - -@item flyspell -@pindex flyspell -@findex global-flyspell-mode -Should work apart from the general problem of @code{ispell}. - -@item func-menu -@pindex func-menu -Should work with X-Symbol. - -@item ispell -@pindex ispell -The package @code{ispell} assumes the buffer contents to be the same as -the file contents and does not provide any hook to fix this. This -should be fixed in @code{ispell}, @ref{Wishlist Emacs}. @xref{FAQ -Spell Check}. - -@pindex ProofGeneral -Use a future version (hopefully v3.4). Includes special X-Symbol -initialization/handling and defines additional token languages. -@xref{External Languages}. - -@item psgml-html -@pindex psgml -@pindex psgml-html -@code{psgml-html}: Do not set @code{html-auto-sgml-entity-conversion} to -non-@code{nil}. @xref{File IO Packages}, package @code{iso-sgml}. - -@item session -@pindex session -Use Version 1.5a or higher. If strings in this file should always be -read correctly, you should put @code{(x-symbol-init-input)} into your -@file{~/.emacs}; otherwise strings containing X-Symbol's private -characters read from the @file{~/.session} file might look funny. See -also package @code{desktop} above. - -@item x-compose -@pindex x-compose -All characters from @code{x-compose} are also supported by package -X-Symbol. Thus, I recommend to use @kbd{@key{multi-key}} instead -@kbd{C-=} when running under XEmacs without Mule support. -@xref{Introducing Input Methods}. -@end table - -@c =========================================================================== - -@node Installing Fonts, Installing Fonts Exceed, Package Integration, Installation -@comment node-name, next, previous, up -@section Installing Additional Fonts -@cindex Installing Fonts -@cindex Fonts -@cindex X11 Fonts - -You don't have to install X-Symbol fonts in usual circumstances (with -the binary distribution, Emacs runs on the same machine, you are happy -with the default fonts). - -If your Emacs runs on a different machine, please follow the steps 5 and -6 below or read the next section. - -If you want to install additional fonts (since the binary distribution -contains only a limited selection of fonts and font sizes), please -follow the following sequence which worked for me (on SunOS -5.4-5.6/Solaris). If you have to do s.th. (completely) different on -your system, please let me know---I will include your hints. - -If you are lost with the following instructions, use the standard fonts -from the binary distribution. (Sorry, I do not have to time to answer -general Unix font questions. Or to be more exact, I'm not an expert in -this area@dots{}. Nevertheless, if you have a clearer explanation for -the installation sequence below, please send me a patch to -@file{man/x-symbol/x-symbol.texi}.) - -@enumerate -@item -@pindex xfd -@pindex xfontsel -Find the font which you want to replace by checking fonts with the X11 -program @code{xfontsel} or @code{xfd}. The bad news is that there is no -general way to say which character belongs to which font. My only goal -was to use standard fonts whenever possible; the rest belong the the -xsymb1 font (which I have designed). If you want to use a font as an -alternative to another font, it must have the same charset -registry-encoding. - -@item -Find the @file{.bdf} files of your preferred fonts in your file system -or by Internet search engines like Google. The source distribution of -package X-Symbol contains @file{.bdf} files for additional fonts sizes -of all fonts except the xsymb1 font (@pxref{Wishlist Fonts}). - -There are two categories of @file{.bdf} files. The first category -contains files for fonts which are already installed; the files are -needed to create and install the super- and subscript versions. Copy -these files to @file{~/.xemacs/xemacs-packages/etc/x-symbol/origfonts/}. The second -category contains files for fonts which are not installed. Copy these -files to @file{~/.xemacs/xemacs-packages/etc/x-symbol/fonts/}. - -@item -In file @file{~/.xemacs/xemacs-packages/etc/x-symbol/fonts/Makefile}, -change variables @code{ORIGBDFS} for the first category and @code{BDFS} -for the second category accordingly. - -@item -@pindex perl -In directory @file{~/.xemacs/xemacs-packages/etc/x-symbol/fonts/}, -execute @code{make mkdirs}, and @code{make pcfs}. You need GNUs -@code{make} and @code{perl}, Version 5 (or higher). - -@item -If your Emacs runs on a different machine or if you want to use the -fonts outside Emacs, too, add X-Symbol's fonts to your font path by -inserting the following in your @file{~/.xsession} (X11 startup file). - -@pindex xset -@example -xset +fp ~/.xemacs/xemacs-packages/etc/x-symbol/pcf/ -@end example - -For a system-wide installation, you might want to add this directory to -the system-wide font path instead. - -If your system doesn't have @code{xset}, you should copy all @file{.pcf} -files (compiled fonts) from @file{~/.xemacs/xemacs-packages/etc/x-symbol/pcf/} into -directory @file{/usr/lib/X11/fonts/75dpi/} (Slackware distribution) and -run @samp{mkfontdir 75dpi} in that directory. - -@item -Your are on the safe side if you restart X11 after this. - -@item -Set the Elisp variables which define the fonts. @xref{Installing Fonts Lisp}. -@end enumerate - -@c ==================================================================== - -@node Installing Fonts Exceed, Installing Fonts Lisp, Installing Fonts, Installation -@comment node-name, next, previous, up -@section Installing Fonts for Exceed (X-server on Windows) -@cindex Installing Fonts -@cindex Fonts -@pindex Exceed -@cindex Windows -@cindex Windows -@cindex X-Server - -If your X-server on Windows is Exceed and if you have configured -Exceed to use the ``native window manager'' for your Unix screens, you -must install the X-Symbol fonts on Windows. The following works with -Exceed 6.0 & NT 4.0 and Exceed 7.0 & Windows 2000: - -@enumerate -@item -In Unix, edit file @file{~/.xemacs/xemacs-packages/etc/x-symbol/fonts/makesub} to limit -the shift for superscript to 3 points: -@smallexample -%supoffs = ('08',3, 10,3, 12,3, 14,3, 16,3, 18,3, 24,3); -@end smallexample - -@item -Then, execute @code{make mkdirs}, and @code{make gens} in -@file{~/.xemacs/xemacs-packages/etc/x-symbol/fonts/}. If you have problems, please read -the previous section. - -@item -In Exceed's configuration window, click on @key{Font} to open Window -@file{Font Settings}. In this window, click on @key{Select All}, then -on @key{Compile Fonts...}. - -@item -Copy X-Symbol's @file{bdf} files in @file{~/.xemacs/xemacs-packages/etc/x-symbol/fonts/} -and @file{~/.xemacs/xemacs-packages/etc/x-symbol/genfonts/} to a Windows directory -and select this directory in the Exceed Window @file{Compile Fonts}. -Click on @key{Compile}. - -@item -In Window @file{Font Settings}, click on @key{Font Database...}. In -this window, click on @key{Add...}. Enter the output directory from the -previous step as the @samp{Font Directory} and @code{xsymb} as the -@samp{File Name (*.fdb)}. Click on @key{OK}. - -@item -You might want to rearrange the sequence of Font DB files to let files -@file{75dpi} appear prior to files @file{100dpi}, because X-Symbol's -fonts are designed for 75dpi. - -@item -In Window @file{Font Database}, click on @key{Rebuild Database...} and -then on @key{OK}. -@end enumerate - -Note: @emph{Windows NT 4.0 will crash (bluescreen) if you use fonts -compiled by Exceed from the @file{pcf} files or if you missed step 1, -i.e., limiting the superscript shift!} With Exceed 7.0 & Windows 2000, -there is no crash, but these fonts cannot be displayed. - -@c ==================================================================== - -@node Installing Fonts Lisp, Installing Manual, Installing Fonts Exceed, Installation -@comment node-name, next, previous, up -@section Lisp Coding when Using Other Fonts -@cindex Font Lisp Setup -@cindex Font Lisp Installation - -Package X-Symbol needs to know which fonts to use for the X-Symbol -characters and super- and subscripts. It also must interact with -package @code{font-lock} to display them (@pxref{Role of font-lock}). - -If you have installed additional fonts (@pxref{Installing Fonts}) for -use with package X-Symbol, you might have to change the following -variables: - -@vtable @code -@item x-symbol-latin1-fonts -@itemx x-symbol-latin2-fonts -@itemx x-symbol-latin3-fonts -@itemx x-symbol-latin5-fonts -@itemx x-symbol-latin9-fonts -@itemx x-symbol-xsymb0-fonts -@itemx x-symbol-xsymb1-fonts -The value of each variable consists of three elements: one for the -normal text, one for subscripts and one for the superscripts. Each -element is a list of fonts which are tried in order---the first which -exists on your system is used. - -If you change the values of one of these variables, do only specify the -same charset registry@minus{}encoding (e.g., @samp{adobe-fontspecific}) -as specified by the fonts in the default value of this variable. - -@item x-symbol-font-sizes -Here you can specify the sizes for all fonts in the above mentioned -variables. The value consists of regular expressions matching font -names and numbers which replace all occurences of @samp{%d} in the -names. -@end vtable - -E.g., if you prefer larger fonts, you might want to insert the following -into your @file{~/.emacs}: - -@smalllisp -(setq x-symbol-font-sizes - '(18 ("_su[bp]-" . 14) ("\\`-etl-" . 16))) -(setq x-symbol-xsymb0-fonts - '(("-adobe-symbol-medium-r-normal-*-*-%d0-*-*-*-*-adobe-fontspecific" - "-xsymb-xsymb0-medium-r-normal--%d-%d0-75-75-p-85-adobe-fontspecific") - ("-adobe-symbol_sub-medium-r-normal-*-*-%d0-*-*-*-*-adobe-fontspecific" - "-xsymb-xsymb0_sub-medium-r-normal--%d-%d0-75-75-p-74-adobe-fontspecific") - ("-adobe-symbol_sup-medium-r-normal-*-*-%d0-*-*-*-*-adobe-fontspecific" - "-xsymb-xsymb0_sup-medium-r-normal--%d-%d0-75-75-p-74-adobe-fontspecific"))) -@end smalllisp - -The first assignment changes the font sizes, the second makes X-Symbol -using the original Adobe symbol font instead of my minor modification -(appearance) of it. The xsymb1 font will be scaled, which might not -look nice (@pxref{FAQ Font Size}). - -You might want to change the following variables: - -@vtable @code -@item x-symbol-latin-force-use -Package X-Symbol defines Latin characters even when the corresponding -fonts are missing (this can be changed by this variable). Characters -for the symbol fonts are only defined if the corresponding fonts are -available. - -@item x-symbol-mule-change-default-face -Package X-Symbol does not change the fonts of pre-defined Mule charsets -(this can be changed by this variable). Thus, the variables from -Section @ref{Installing Fonts Lisp} might have no influence if Emacs -already has defined fonts for the corresponding charsets. -@end vtable - -@c ==================================================================== - -@node Installing Manual, Checking Installation, Installing Fonts Lisp, Installation -@comment node-name, next, previous, up -@section Installing Info, Postscript and HTML Files -@cindex Installing Manual -@cindex Info -@cindex Texinfo -@cindex Postscript -@cindex HTML -@cindex Manual -@cindex Documentation - -@pindex makeinfo -To create the info files, execute @code{make info} in directory -@file{~/.xemacs/xemacs-packages/man/x-symbol/} of the distribution. It requires -@code{makeinfo}, Version 1.68 or higher. This should not be necessary -if you use the binary distribution of package X-Symbol. - -If no entry for X-Symbol is automatically added to the info directory -listing, add the following line to @file{~/.xemacs/xemacs-packages/info/dir}: -@smallexample -* X-Symbol:: Semi WYSIWYG for LaTeX, HTML and other "token languages" -@end smallexample - - -@pindex texi2dvi -Optionally, you might want to create a printed document from the @TeX{}info -file. Execute @code{make ps} in directory @file{~/.xemacs/xemacs-packages/man/x-symbol/} -of the distribution. It requires @code{texi2dvi}. - -@pindex latex2html -Optionally, you can create an online manual for a web browser by -executing @code{make html} in directory @file{~/.xemacs/xemacs-packages/man/x-symbol/} of -the distribution. It requires @code{texi2html}. - -All formats of the manual are created by executing @code{make all}. - -@c ==================================================================== - -@node Checking Installation, , Installing Manual, Installation -@comment node-name, next, previous, up -@section Checking the Correct Installation of Package X-Symbol -@cindex Checking Installation -@cindex Final Installation Checks -@cindex Installation Checks - -After having completed the installation, exit and restart Emacs. - -@itemize @bullet -@item -Type @kbd{M-x show-message-log} to check whether you got problems so -far, e.g., whether errors occurred when loading a file. If you do, -identity and correct the offender. - -@item -Type @kbd{M-x x-symbol-grid} in buffer @file{*scratch*}. If you get the -Grid but if you see less characters than you see on the web page of -package X-Symbol, you have decided to use other fonts but failed to -install them correctly. This is also mentioned in buffer -@file{*Warnings*}. @xref{Installing Fonts}. - -@item -Move your mouse pointer to any X-Symbol character in buffer -@file{*X-Symbol Grid (x-symbol charsym)*}, press the right mouse button -and initialize successively all token languages. - -@item -Again, type @kbd{M-x show-message-log} to check whether you got problems -so far, e.g., whether errors occurred when loading a file. If you do, -identity and correct the offender. - -@item -If buffer @file{*Warnings*} does not exist in the buffer menu, -everything is fine. So is (for me as the author of package X-Symbol), -if @samp{X-Symbol} is not mentioned there. If there is a warning with -@samp{no valid image converter}, you have forgotten to install -ImageMagick (@pxref{Installing Image Converter}). -@end itemize - -@c =========================================================================== - -@node Concepts, Input Methods, Installation, Top -@comment node-name, next, previous, up -@chapter Concepts of Package X-Symbol -@cindex Concepts -@cindex Terminology -@cindex Basics - -This chapter describes the concepts of package X-Symbol. It contains -quite a few forward references to feature which are based on these -concepts, such as @ref{Input Methods} and @ref{Features}. - -@menu -* Token Language:: What does a X-Symbol character represent. -* Conversion:: Decoding tokens, encoding characters. -* Minor Mode:: How to control the behavior of X-Symbol. -* Poor Mans Mule:: Running X-Symbol under XEmacs/no-Mule. -* Role of font-lock:: Why does X-Symbol need @code{font-lock}. -* Char Group:: Character group and token classes. -@end menu - -@c =========================================================================== - -@node Token Language, Conversion, Concepts, Concepts -@comment node-name, next, previous, up -@section Token Language -@cindex Token Language -@cindex Language - -As mentioned in the overview, ``X-Symbol Characters'' in the buffer are -represented by ``tokens'' in the file. The correspondence between these -is determined by the @dfn{token language} which is in close relation to -the major mode of the current buffer. E.g., character @code{alpha} -stands for @code{\alpha} in La@TeX{} buffers. - -For details of predefined token languages ``@TeX{} macro'' (@code{tex}), -``@sc{sgml} entity'' (@code{sgml}), ``Bib@TeX{} macro'' (@code{bib}), and -``@TeX{}info command'' (@code{texi}), see @ref{Supported Languages}. - -The token language determines the conversion between X-Symbol characters -and tokens (@ref{Conversion}), the input methods (@pxref{Input -Methods}), and various other features (@pxref{Features}). - -The token language is defined by the following buffer-local variable: - -@vtable @code -@item x-symbol-language -Token language used in current buffer. You can set this variable in the -``local variables list'' near the end of the file (@pxref{File -Variables,,,xemacs,XEmacs User's Manual}), e.g.: - -@example -%% Local Variables: -%% x-symbol-language: tex -%% End: -@end example -@end vtable - -Package X-Symbol uses a reasonable value according to the major mode and -the file name of a buffer if the variable is not already buffer-local. -A valid token language is required to turn on X-Symbol Minor mode, see -@ref{Minor Mode}. - -A token language must be @dfn{registered}, if you want to use it. By -default, the above mentioned token languages are registered. - -@c =========================================================================== - -@node Conversion, Minor Mode, Token Language, Concepts -@comment node-name, next, previous, up -@section Conversion: Decoding and Encoding -@cindex Conversion -@cindex Decoding -@cindex Encoding - -As mentioned, X-Symbol characters in the buffer are represented by -tokens in the file. Thus, we need some conversion from tokens to -characters, called @dfn{decoding}, and some conversion from characters -to tokens, called @dfn{encoding}. - -We have the additional problem that some characters are not only -represented by tokens, but also via some 8bit character encoding. - -Package X-Symbol supports the following 8bit character encodings: -Latin-1 (@code{iso-8859-1}), Latin-2 (@code{iso-8859-2}), Latin-3 -(@code{iso-8859-3}), Latin-5 (@code{iso-8859-9}), and Latin-9 -(@code{iso-8859-15}). It currently supports less encodings with XEmacs -on Windows (@pxref{Requirements}). - - -@menu -* Default Coding:: Encoding of your default charset. -* File Coding:: Specific encoding of a file. -* Controlling 8bit Coding:: Do you want to store 8bit characters? -* Unique Decoding:: Restrict decoding to avoid normalization? -* Conversion Commands:: Interactive encoding and decoding. -* Copy with Conversion:: Copy & paste with conversion. -* Char Aliases:: Different charsets include the same chars. -@end menu - - -@node Default Coding, File Coding, Conversion, Conversion -@comment node-name, next, previous, up -@subsection Default Coding -@cindex Default Coding -@cindex Default Encoding -@cindex Default Font -@cindex Coding, Default -@cindex Encoding, Default -@cindex Font, Default - -As mentioned, some characters have a 8bit file encoding, and X-Symbol -needs to know which 8bit file encoding you use normally when visiting a -file and saving a buffer. - -With Mule support, Emacs/XEmacs can recognize the @dfn{normal file -encoding}, also called a coding system (@pxref{Recognize -Coding,,,xemacs,XEmacs User's Manual}). - -Without Mule support, XEmacs can usually only support 8bit characters of -one encoding; this encoding corresponds to the charset/registry of your -default font. Here, the @dfn{normal file encoding} is the default -encoding: - -@vtable @code -@item x-symbol-default-coding -The default encoding. The value must be a symbol denoting one of the -supported encodings or @code{nil}. The variable must be set before -X-Symbol has been initialized. @xref{Installing Lisp}. -@end vtable - -The @dfn{default encoding} is not only used to determine the normal file -encoding without Mule, but also for the following: - -@itemize @bullet -@item -X-Symbol has its own mechanism to recognize a file encoding which only -works with a specified default encoding. @xref{File Coding}. - -@item -The same character can be included in various Latin charsets and -X-Symbol needs to know which of the instances (which Emacs views as -different characters) to support. @xref{Char Aliases}. - -@item -Without Mule support, the default encoding is also needed to decide -which characters have to be faked by 2 characters internally: exactly -the characters in those charsets which do not correspond to the default -encoding. @xref{Poor Mans Mule}. -@end itemize - -To deduce the default value, X-Symbol inspects the Mule language -environment and the output of the shell command @code{locale}, or to be -more exact: - -@example -locale -ck code_set_name charmap -@end example - -Without Mule support, you get a warning if the command does not exist on -your system or lists an encoding which is not supported by X-Symbol, -such as some Asian encoding. Value @code{nil} is the same as -@code{iso-8859-1}. - -With Mule support, you get a warning if the command lists a supported -encoding which is different from the encoding deduced from the Mule -language environment. Value @code{nil} makes sure that X-Symbol file -encoding detection (@pxref{File Coding}) only works if Emacs has -detected the same encoding; it works like @code{iso-8859-1} otherwise. - - -@node File Coding, Controlling 8bit Coding, Default Coding, Conversion -@comment node-name, next, previous, up -@subsection File Coding of 8bit Characters -@cindex File Coding -@cindex Coding in File -@cindex Encoding in File -@cindex 8bit File Coding -@cindex Latin File Coding -@cindex Recoding - -X-Symbol can use a different encoding for single buffers/files, even if -you use X-Symbol on XEmacs without Mule support. To do so, set the -following buffer-local variable: - -@vtable @code -@item x-symbol-coding -8bit character encoding in the file visited by the current buffer. -Value @code{nil} represents the normal file encoding (@pxref{Default -Coding}). - -With Mule support, any value other than @code{nil} is considered invalid -if the normal file encoding is neither the same as this value nor the -same as the default encoding. I.e., if your default encoding is -@code{nil}, X-Symbol's file encoding detection never takes precedence -over Emacs' one, i.e., the normal file encoding. - -You can set this variable in the ``local variables list'' near the end -of the file (@pxref{File Variables,,,xemacs,XEmacs User's Manual}), -e.g.: - -@example -<!-- Local Variables: --> -<!-- x-symbol-coding: iso-8859-2 --> -<!-- End: --> -@end example -@end vtable - -If the variable is not already buffer-local, a reasonable value is -deduced when turning on X-Symbol (@pxref{Minor Mode}) by searching for -some language dependent headers at the beginning of the file: - -@vtable @code -@item x-symbol-auto-coding-search-limit -X-Symbol usually searches for something like -@samp{\usepackage[@dots{}]@{inputenc@}} (@pxref{TeX Macro}) or @samp{<meta @dots{} -charset=@dots{}>} (@pxref{SGML Entity}) in the first 10000 characters. -@end vtable - -If you choose not to save a file containing 8bit characters -(@pxref{Controlling 8bit Coding}), the file encoding is still important, -since the file might contain 8bit characters when you visit it. - -If the file encoding is different to the normal file encoding, X-Symbol -performs the necessary recoding itself. @dfn{Recoding} changes a -character with code position @var{pos} in one charset to a character -with the same code position @var{pos} in another charset. If the normal -file encoding is different to the default encoding, X-Symbol also -resolves character aliases (@pxref{Char Aliases}). - -If you have specified an invalid file encoding (including an encoding -different to a non-default normal file encoding), we have the following -cases: - -@itemize @bullet -@item -If the normal file encoding is unsupported (any file encoding is invalid -in this case) or if the normal file encoding is supported and the file -does not contain 8bit characters, we always encode all X-Symbol -character (@xref{Controlling 8bit Coding}). The modeline includes -@samp{-i} to represent the file encoding (@pxref{Minor Mode}), except if -the default encoding is @code{nil}, the normal file encoding is -unsupported, and the variable @code{x-symbol-coding} is not specified. - -@item -If the normal file encoding is supported and the file contains at least -one 8bit character, X-Symbol does not touch 8bit characters and never -produces them, neither via decoding (@pxref{Unique Decoding}) nor via -input methods. The modeline includes @samp{-err} to represent the file -encoding (@pxref{Minor Mode}). -@end itemize - -We end with a little example: if your normal file encoding and default -encoding is Latin-1, and you visit a file with -@samp{\usepackage[latin9]@{inputenc@}} producing some document containing -the Euro sign, you see the Euro character in Emacs when X-Symbol is -enabled, but you see the currency character without X-Symbol. - - -@node Controlling 8bit Coding, Unique Decoding, File Coding, Conversion -@comment node-name, next, previous, up -@subsection Store or Encode 8bit Characters -@cindex Storing 8bit Characters -@cindex Controlling 8bit Coding -@c @cindex Buffer 8bit Control -@cindex 8bit Coding Control -@cindex Latin in File - -You can specify that 8bit characters (according to the coding in your -file, @ref{File Coding}), are not encoded to tokens (when saving a -file), by setting the following buffer-local variable: - -@vtable @code -@item x-symbol-8bits -Whether to store 8bit characters when saving the current buffer. - -You can set this variable in the ``local variables list'' near the end -of the file (@pxref{File Variables,,,xemacs,XEmacs User's Manual}), -e.g.: - -@example -%% Local Variables: -%% x-symbol-8bits: t -%% End: -@end example -@end vtable - -If the variable is not already buffer-local, a reasonable value is -deduced when turning on X-Symbol (@pxref{Minor Mode}) by setting it the -the value of @code{x-symbol-coding}, or searching in the file for 8bit -characters: - -@vtable @code -@item x-symbol-auto-8bit-search-limit -If there is a 8bit character in the file when visiting it, X-Symbol will -also store 8bit characters when saving the buffer. -@end vtable - -If the file encoding is invalid (@pxref{File Coding}), we always search -for 8bit characters in the complete document and set -@code{x-symbol-8bits} accordingly. Then, a non-@code{nil} value also -implies unique decoding (@pxref{Unique Decoding}). - -While the variable @code{x-symbol-8bits} usually only influences the -encoding, it also influences the decoding if you choose to decode -uniquely (@pxref{Unique Decoding}). - -Setting variable @code{x-symbol-8bits} to @code{nil} does not -necessarily mean that the file will not contain 8bit characters: the -characters might have no token representation in the current token -language (@pxref{TeXinfo Command}), or they are glyphs for ununsed code -points in the Latin-3 charset. In both cases, it is unlikely that you -have inserted these invalid characters via X-Symbol's input methods -(@pxref{Introducing Input Methods}), you have probably copied them into -the current buffer. - - -@node Unique Decoding, Conversion Commands, Controlling 8bit Coding, Conversion -@comment node-name, next, previous, up -@subsection Unique Decoding -@cindex Unique Decoding -@cindex Restricted Decoding -@cindex Unique @TeX{} macro - -Token languages might define more than one token representing the same -character. When decoding and encoding these tokens, they will be -@dfn{normalized} to one form, the @dfn{canonical representation}. E.g., -with language @code{tex}, visiting a file with tokens @code{\neq} and -@code{\ne} converts both tokens to character @code{lessequal}, saving -the buffer stores the character as token @code{\neq} in both -occurrences. - -It can also happen that a file contains both a 8bit character and a -token which would be converted to exactly that character. When saving -the file, both characters are either not encoded, or both are encoded to -the same token. - -Normally, this is no problem. But if you redefine standard @TeX{} -macros, it certainly could be the case (@pxref{TeX Macro Problems})! -For this reason, package X-Symbol provides the following buffer-local -variable: - -@vtable @code -@item x-symbol-unique -Whether to limit the decoding in such a way that no normalization will -happen. That means: only decode canonical tokens, and, if -@code{x-symbol-8bits} is non-@code{nil} (@pxref{Controlling 8bit -Coding}), do not decode tokens which would be decoded to 8bit characters -(according to the coding in your file, @ref{File Coding}). - -You can set this variable in the ``local variables list'' near the end -of the file (@pxref{File Variables,,,xemacs,XEmacs User's Manual}), -e.g., together with a setting for @code{x-symbol-8bits}: - -@example -%% Local Variables: -%% x-symbol-8bits: t -%% x-symbol-unique: t -%% End: -@end example -@end vtable - -If the variable is not already buffer-local, a reasonable value is -deduced when turning on X-Symbol (@pxref{Minor Mode}): it will be set to -@code{t} if X-Symbol mode is not automatically turned on. - -If the file encoding is invalid (@pxref{File Coding}) and -@code{x-symbol-8bits} is non-@code{nil} (@pxref{Controlling 8bit -Coding}), X-Symbol always uses unique decoding (@pxref{Unique -Decoding}). - - -@node Conversion Commands, Copy with Conversion, Unique Decoding, Conversion -@comment node-name, next, previous, up -@subsection Conversion Commands -@cindex Conversion Commands -@cindex Automatic Conversion -@cindex Interactive Conversion -@cindex Explicit Conversion - -First the good news: most of the time, the necessary conversions are -performed automatically when you would expect them to be performed: - -@itemize @bullet -@item -Turning X-Symbol minor mode (@pxref{Minor Mode}) on/off also performs -decoding/encoding. - -@item -Saving a buffer where X-Symbol is enabled will encode the characters to -tokens in the file (of course, you keep to have the characters in the -buffer). - -@item -Inserting a file into a buffer where X-Symbol is enabled will decode the -tokens in the inserted region. -@end itemize - -Nevertheless, you might want to perform the conversions explicitly in -some situations by using one of the following commands (also to be found -in the menu): - -@table @kbd -@item M-x x-symbol-decode-recode -@findex x-symbol-decode-recode -Recode all characters (if necessary) and decode all tokens to -characters. - -@item M-x x-symbol-decode -@findex x-symbol-decode -Decode all tokens to characters, do not recode characters. - -@item M-x x-symbol-encode-recode -@findex x-symbol-encode-recode -Encode all characters in buffer to tokens or recode them. - -@item M-x x-symbol-encode -@findex x-symbol-encode -Encode all characters in buffer to tokens. No recoding will be -performed since 8bit characters will always be encoded if the file -coding is different to the default coding, since @code{x-symbol-8bits} -is relative to the file coding, @ref{Controlling 8bit Coding}. -@end table - -All commands work on the region if it is active, or the (narrowed part -of the) buffer if no region is active. - -If the file coding is the same as the default coding, the variants with -and without recoding (@pxref{File Coding}) do the same. The variants -with recodings are the ones used when doing the conversion -automatically. The variants without recodings are the ones used when -using the special Copy & Paste commands presented in the next -subsection. - - -@node Copy with Conversion, Char Aliases, Conversion Commands, Conversion -@comment node-name, next, previous, up -@subsection Copy & Paste with Conversion -@cindex Copy and Conversion -@cindex Copy Encoded -@cindex Paste and Conversion -@cindex Paste Decoded -@cindex Yank Decoded - -You probably use X-Symbol, because you want to produce some -non-@sc{ascii} characters in your final document, but you are not really -interested what kind of token you would need to write. (After all, you do -not use a hex editor to produce documents using some non-@sc{ascii} -encoding in the file, since you are not interested in the byte sequence -of individual characters.) - -Consequently, all editing operations really work on characters, not on -the corresponding tokens for the token language of the current buffer. -This includes copying and pasting: if you copy the character -@code{plusminus} from a LaTeX buffer to a HTML buffer, you really copy -that character and not the three characters of the TeX macro @code{\pm}. - -If you copy text to a buffer where X-Symbol is not enabled, like a mail -buffer, that is probably not what you want. Similarly, you would -probably like to see the X-Symbol characters for tokens in a text which -you have copied from such a buffer. Therefore, X-Symbol provides the -following commands (also to be found in the menu): - -@table @kbd -@item M-x x-symbol-copy-region-encoded -@findex x-symbol-copy-region-encoded -@vindex kill-ring -Save the region in the @code{kill-ring} with all X-Symbol characters -encoded like by @kbd{M-x x-symbol-encode}, i.e., without recoding. - -@item M-x x-symbol-yank-decoded -@findex x-symbol-yank-decoded -Reinsert the last text in the @code{kill-ring} and decode the inserted -text like @kbd{M-x x-symbol-decode}, i.e., without recoding. -@end table - -You could get the same result with the usual copy & paste commands and -the conversion commands from the previous section (@pxref{Conversion -Commands}), but this would clutter the undo information of the current -buffer and would require an additional undo operation for the copy. - - -@node Char Aliases, , Copy with Conversion, Conversion -@comment node-name, next, previous, up -@subsection Character Aliases -@cindex Char Aliases -@cindex Character Aliases -@cindex Aliases of Characters -@cindex Latin Character Aliases -@cindex Remapping Characters - -A @dfn{character alias} or @dfn{char alias} is a character which is also -a character in a font with another registry, e.g., @code{adiaeresis} is -defined in all supported Latin fonts. Emacs distinguish between these -five characters. In package X-Symbol, one of them, with -@code{x-symbol-default-coding} (@pxref{Default Coding} if possible, is -supported by the input methods, the other ones are char aliases to the -supported one. - -The reason is that it would be confusing for the user to choose among -different @code{adiaeresis}es and that there are neither different -@code{adiaeresis}es in Unicode nor in the token representations of -languages @code{tex} and @code{sgml}. - -8bit characters in files with a file coding @code{x-symbol-coding} other -than @code{x-symbol-default-coding} are converted to the ``normal'' -form. E.g., if you have a Latin-1 font by default, the -@code{adiaeresis} in a Latin-2 encoded file is a Latin-1 -@code{adiaeresis} in the buffer. When saving the buffer, its is again -the right 8bit character in the Latin-2 encoded file. - -Thus, in normal cases, buffers do not have char aliases. In Emacs with -Mule support, this is only possible if you copy characters from buffers -with characters considered as char aliases by package X-Symbol, e.g., -from the Mule file @file{european.el}. In XEmacs without Mule support, -this is only possible if you use commands like @kbd{C-q 2 3 4}. - -If you have char aliases in the current buffer, you might want to use -(it is not really necessary, just when searching for characters): - -@table @kbd -@item M-x x-symbol-unalias -@findex x-symbol-unalias -Resolve all character aliases in buffer. If the region is active, only -resolve char aliases in the region. -@end table - -A single char alias before point can be resolved by command -@code{x-symbol-modify-key} and @code{x-symbol-rotate-key}, see -@ref{Input Method Context}. - -@pindex latin-unity -The XEmacs package @code{latin-unity} provides a command to ``remap'' -characters to one character set (if possible). X-Symbol's unaliasing -can be seen as remap operations to a fixed sequence of character sets. - -@c =========================================================================== - -@node Minor Mode, Poor Mans Mule, Conversion, Concepts -@comment node-name, next, previous, up -@section Minor Mode -@cindex Minor Mode -@cindex Mode -@cindex X-Symbol Mode - -X-Symbol is a minor mode (@pxref{Minor -Modes,,,xemacs,XEmacs User's Manual}) which enables the features -mentioned in this manual: - -@itemize @bullet -@item -X-Symbol mode is required to do the conversions. Turning the minor mode -on/off also includes decoding/encoding (@pxref{Conversion Commands}). - -@item -X-Symbol mode provides the minor mode menu which includes: various -commands, commands to insert characters (@pxref{Input Method Menu}), and -entries to change some global and buffer-local variables mentioned in -this manual. The menu might also include individual entries for a token -language (@pxref{TeX Macro Basics}): - -@vtable @code -@item x-symbol-@var{lang}-extra-menu-items -Extra menu items for each token language @var{lang}. -@end vtable - -@item -X-Symbol mode is required for most input methods (@pxref{Input Methods}) -and other features (@pxref{Features}). -@end itemize - -With the default installation, X-Symbol mode is automatically turned on -when it is appropriate to do so (see below for details). You can -control it for individually by the following command: - -@table @kbd -@item M-x x-symbol-mode -@findex x-symbol-mode -@vindex x-symbol-mode -Toggle X-Symbol mode. If provided with a numeric prefix argument, turn -X-Symbol mode on if the argument is positive, else turn it off. -@end table - -Turning X-Symbol mode on requires that you have a valid token language -for the current buffer. Since turning X-Symbol mode on also decodes -tokens, it is also useful to set the variables which control the -conversion (@pxref{Conversion}). - -Since people usually do not want to write some Emacs lisp functions to -do some customizations, X-Symbol provides the following variables which -induce X-Symbol to set the necessary buffer-local variables when -X-Symbol is turned on: - -@vtable @code -@item x-symbol-auto-style-alist -You can use the major mode and/or the name of the buffer or visited -file, and specific functions to set the following variables (if not -already buffer-local): - -@itemize @minus -@item -@code{x-symbol-token-language} (@pxref{Token Language}), indicated in -the modeline, e.g. @samp{tex}, -@item -@code{x-symbol-mode}, i.e., whether it is appropriate to turn on -X-Symbol mode automatically, -@item -@code{x-symbol-coding} (@pxref{File Coding}), indicated in the modeline -if different from the default coding, e.g. @samp{-l2} for Latin-2, -@item -@code{x-symbol-8bits} (@pxref{Controlling 8bit Coding}), indicated in -the modeline by @samp{8}, -@item -@code{x-symbol-unique} (@pxref{Unique Decoding}), indicated in -the modeline by @samp{*}, -@item -@code{x-symbol-subscripts} (@pxref{Super and Subscripts}), indicated in -the modeline by @samp{s}, -@item -@code{x-symbol-image} (@pxref{Images}), indicated in the modeline by -@samp{i}, -@end itemize - -@item x-symbol-@var{lang}-modes -Major modes which use token language @var{lang} by default. -@xref{Supported Languages}. - -@item x-symbol-@var{lang}-auto-style -Default values for the above mentioned variables @code{x-symbol-mode}, -@code{x-symbol-coding}, @code{x-symbol-8bits}, @code{x-symbol-unique}, -@code{x-symbol-subscripts}, and @code{x-symbol-image} if not already -buffer-local. - -@item x-symbol-auto-mode-suffixes -Regular expression matching file suffixes to be ignored when checking -file names for the derivation above, e.g., extension @file{.orig}. - -@item x-symbol-modeline-state-list -This variable controls the modeline appearance just mentioned. -@end vtable - -@c ==================================================================== - -@node Poor Mans Mule, Role of font-lock, Minor Mode, Concepts -@comment node-name, next, previous, up -@section Poor Man's Mule: Running Under XEmacs/no-Mule -@cindex Poor Man's Mule -@cindex No Mule -@cindex XEmacs without Mule - -Using XEmacs/no-Mule normally means that you are restricted to use not -more than 256 different characters in your documents. - -Package X-Symbol provides a lot more characters which can also be used -with XEmacs/no-Mule. Internally, all X-Symbol characters except the -ones of your default font (@pxref{Default Coding}) are represented by -two characters, see @ref{Char Representation}. - -This can lead to a lot of problems, which are resolved by the following -methods (some annoyances remain, @pxref{Nomule Problems}) when X-Symbol -mode is turned on (@pxref{Minor Mode}): - -@itemize @bullet -@item -After each editing command, i.e., point movement, deletion of text and -insertion of text, package X-Symbol checks whether just one of the two -internal characters of an X-Symbol character has been affected. - -@item -Package @code{font-lock} is used to display these two-character -sequences with the correct fonts. The potential problem lies in the -set-up of the corresponding font-lock keywords, see @ref{Role of -font-lock}. - -@ftable @code -@item x-symbol-nomule-fontify-cstrings -Alternatively to enabling @code{font-lock}, you can run this functions -in buffers having the special two-character sequences. With the default -installation, this function is run in the selection buffers of package -@code{reftex}. -@end ftable -@end itemize - -@c ==================================================================== - -@node Role of font-lock, Char Group, Poor Mans Mule, Concepts -@comment node-name, next, previous, up -@section The Role of @code{font-lock} -@cindex Role of @code{font-lock} -@cindex @code{font-lock} Use -@cindex Special Fonts - -Package X-Symbol uses package @code{font-lock} to display super- and -subscripts (@pxref{Super and Subscripts}) and to display its special -characters under XEmacs/no-Mule (@pxref{Poor Mans Mule}). Thus, you -should enable @code{font-lock} in buffers where you want to use X-Symbol -(it is by default). @xref{Syntax Hiliting Packages}. - -When X-Symbol mode is turned on, it automatically adds the necessary -font-lock keywords to the buffer-local value of -@code{font-lock-keywords} and all font-lock keywords which are commonly -used with the current token language. - -Setting all font-lock keywords is important since @code{font-lock} might -not yet been turned on or since you might want to change -@code{font-lock}s decoration of the current buffer after X-Symbol has -been turned on. - -Please note that switching the mode by typing @kbd{M-x latex-mode} -@emph{does not set} the La@TeX{}'s font-lock keywords! They are set at -the end of @kbd{C-x C-f}. If you switch the mode, turn on -@code{font-lock} by yourself. - -Independently from package X-Symbol, the following command might be -useful in some situations: - -@table @kbd -@item M-x x-symbol-fontify -@findex x-symbol-fontify -Refontify buffer. -@end table - -@c ==================================================================== - -@node Char Group, , Role of font-lock, Concepts -@comment node-name, next, previous, up -@section Character Group and Token Classes -@cindex Character Group -@cindex Group of Characters -@cindex Similar Characters -@cindex Category of Character -@cindex Syntax of Character -@cindex Token Classes -@cindex Classes of Tokens -@cindex Coloring Scheme - -Each X-Symbol character belongs to a @dfn{character group}, e.g., -@code{natnums} belongs to @code{setsymbol}. A character group should -consists of similar characters where ``similar'' means similar meaning, -not similar appearance. Two characters which have nearly the same -appearance, should be in the same group, though. The group determines: - -@itemize @bullet -@item -The Grid and submenu header under which the character can be found -(@pxref{Input Method Grid}, @ref{Input Method Menu}). - -@item -The default bindings of characters (@pxref{Input Method Keyboard}) of -some groups. - -@item -Whether to show the context info for a character (@pxref{Info}). - -@item -The default @sc{ascii} representation of a character (@pxref{Ascii -Representation}). - -@item -When using Emacs/XEmacs with Mule support, the syntax of a character -(@pxref{Syntax,,,xemacs,XEmacs User's Manual}). -@end itemize - -The character group is independent from any token language, but is -probably somewhat related to some of its @dfn{token classes}. For each -token language, each character is assigned to a list of token classes, -which can be used for the following: - -@itemize @bullet -@item -Information in the echo area (@pxref{Info}), it could inform users to -include a specific La@TeX{} package when they want to use that character -in the document. - -@item -Using a @dfn{coloring scheme} when displaying the characters in the echo -area (@pxref{Info}) or the Grid of characters (@pxref{Input Method -Grid}), useful for characters which can just be used in a specific -context, like @TeX{}'s math-mode characters. - -@item -Restricting the ``electricity'' of input method Electric (@pxref{Input -Method Electric}), useful to disable this input methods for @TeX{}'s -math-mode characters if we are in text-mode. -@end itemize - -The token classes for individual token languages are explained in the -corresponding sections of chapter @ref{Supported Languages}: - -@vtable @code -@item x-symbol-@var{lang}-header-groups-alist -The Grid and Menu headers for each token language @var{lang}. - -@item x-symbol-@var{lang}-class-alist -Strings for the character info in the echo area for each token language -@var{lang}. - -@item x-symbol-@var{lang}-class-face-alist -The coloring scheme for each token language @var{lang}. -@end vtable - -@c =========================================================================== - -@node Input Methods, Features, Concepts, Top -@comment node-name, next, previous, up -@chapter X-Symbol's Input Methods -@cindex Input Methods -@cindex Character Insertion - -An X-Symbol @dfn{input method} is a way, provided by package X-Symbol, -to insert a X-Symbol character (not in the sense of Mule's ``input -methods''). For a short overview with screenshots, see the -@uref{http://x-symbol.sourceforge.net/details.html, web pages of X-Symbol}. - -Input methods Token and Electric change the normal way to insert -characters a bit. Therefore, they require X-Symbol mode to be turned on -and can be turned off explicitly. The other input methods are provided -with additional commands and key prefixes, they can also be used in -buffers where X-Symbol mode is turned off. - -With Auc@TeX{}, Version 9.8a or higher, its math mode commands also -inserts X-Symbol characters -(@pxref{Mathematics,,,auctex,AUC@TeX{}}). - -@menu -* Introducing Input Methods:: Common behavior of all input methods. -* Input Method Token:: Replace token by character. -* Input Method Read Token:: Minibuffer input with completion. -* Input Method Menu:: Select a menu item. -* Input Method Grid:: Choose highlighted character. -* Input Method Keyboard:: Compose a key sequence. -* Input Method Context:: Replace character sequence. -* Input Method Electric:: Automatically replace character sequence. -* Input Method Quail:: A Mule input method "x-symbol". -* Customizing Input Method:: How to customize the input methods. -@end menu - -@c =========================================================================== - -@node Introducing Input Methods, Input Method Token, Input Methods, Input Methods -@comment node-name, next, previous, up -@section Common Behavior of All Input Methods -@cindex Input Methods, General -@cindex Input Methods, Common -@cindex Input Methods, Standard -@cindex Valid Character -@cindex Allowed Character -@cindex Key Prefix -@cindex Prefix Argument -@cindex Prefix Key -@cindex Defined Character -@cindex Compose Key - -Input methods normally just inserts @dfn{valid characters} which are -those characters which have a useful representation in the file: - -@vtable @code -@item x-symbol-valid-charsym-function -When X-Symbol is turned off, a character is valid if it is an 8bit -character according to the value of @code{x-symbol-default-coding}. - -When X-Symbol is turned on, a character is valid if the characters could -be encoded to a token in language @code{x-symbol-language} (@pxref{Token -Language}). -@end vtable - -If a buffer is read-only (@pxref{Misc -Buffer,,,xemacs,XEmacs User's Manual}), most input methods push the -character to insert onto the kill ring instead. Typing @kbd{C-y} lets -you then insert the character -(@pxref{Yanking,,,xemacs,XEmacs User's Manual}). - -The input methods Keyboard, Menu and Grid (the character selection with -@kbd{@key{button2}}) have the same interpretation of the prefix -argument: - -@itemize @bullet -@item -With prefix argument @samp{0}, do not insert anything, just barf, if the -character is not valid. - -@item -With a positive prefix argument, insert a character that many times. -Barf, if the character is not valid. - -@item -With a negative prefix argument, insert a character as many times as -specified by the absolute value of the prefix argument. A character is -also inserted if it is not valid. - -@item -With one or more @kbd{C-u}s with no digits, insert the token of a -language to choose, including ``x-symbol charsym'' (@pxref{Pseudo -Language}). -@end itemize - -Many input commands of package X-Symbol uses the same key prefix in its -default binding: - -@vtable @code -@item x-symbol-compose-key -@kindex C-= -@kindex @key{multi-key} -By default, @kbd{C-=} is used as the key prefix. Under XEmacs/no-Mule, -you might want to use @kbd{@key{multi-key}} instead: - -@lisp -(unless (featurep 'mule) (setq x-symbol-compose-key '(multi-key))) -@end lisp - -@item x-symbol-auto-key-autoload -Set this to @code{nil}, if you do not want that pressing @kbd{C-=} -automatically initializes the input methods. -@end vtable - -@c =========================================================================== - -@node Input Method Token, Input Method Read Token, Introducing Input Methods, Input Methods -@comment node-name, next, previous, up -@section Input Method Token: Replace Token by Character -@cindex Input Method Token -@cindex Token, Input Method -@cindex Replace Token -@cindex Abbrev, Token @c pre-2.2 - -If X-Symbol mode is on, input method @dfn{Token} automatically replaces -the token by the corresponding character when inserting the next -character following the token (in some token languages you need the next -character to decide whether the token is completed) if it is valid. - -The token will be replaced only if the next character has been inserted -without prefix argument or with prefix argument 0 (@kbd{C-u 0}), the -latter will therefore just induce the replacement. - -Please note that the token is really replaced by the characters, it is -not just @code{font-lock} which highlights the token to look like a -character. - -You might want to press @kbd{C-/} or @kbd{C-x u} to undo the -replacement. Input method Token requires X-Symbol mode to be enabled, -it can be disabled (and re-enabled) by setting the following variable: - -@vtable @code -@item x-symbol-token-input -A boolean which can also be changed via the X-Symbol menu. -@end vtable - -Individual token language might slightly change the way input method -Token works exactly; from the predefined language, it is just @code{tex} -(@pxref{TeX Macro}). - -@c =========================================================================== - -@node Input Method Read Token, Input Method Menu, Input Method Token, Input Methods -@comment node-name, next, previous, up -@section Input Method Read Token: Minibuffer Completion -@cindex Input Method Read Token -@cindex Read Token, Input Method -@cindex Minibuffer Completion, Token - -You can insert a character by reading the corresponding token in the -minibuffer. You are offered completion over the known tokens -(@pxref{Completion,,,xemacs,XEmacs User's Manual}). - -@table @kbd -@item M-x x-symbol-read-token-direct -@itemx C-= @key{TAB} -@findex x-symbol-read-token-direct -@kindex C-= @key{TAB} -Insert character by selecting a token in the current token language -(even if X-Symbol mode is turned off) or an ``x-symbol charsym'' -(@pxref{Pseudo Language}). - -@item M-x x-symbol-read-token -@itemx C-= @key{RET} -@findex x-symbol-read-token -@kindex C-= @key{RET} -Insert character by first selecting the token language and then a token -in that language. -@end table - -Input method Read Token also works if X-Symbol mode is not enabled. It -uses the common interpretation of prefix arguments for X-Symbol insert -commands, see @ref{Introducing Input Methods}. - -@c =========================================================================== - -@node Input Method Menu, Input Method Grid, Input Method Read Token, Input Methods -@comment node-name, next, previous, up -@section Input Method Menu: Select a Menu Item -@cindex Input Method Menu -@cindex Menu, Input Method - -If X-Symbol mode is turned on, a @dfn{Menu} @code{X-Symbol} appears in -the menubar (@pxref{Minor Mode}). It also appears over non-highlighted -parts in the Grid and the Key Completions buffer (@pxref{Input Method -Grid}). The menu allows to change buffer-local and global variables -(some directly, some via package @code{custom}). It has a submenu with -the most interesting commands of package X-Symbol. - -The menu has submenus with commands to insert X-Symbol characters. The -submenu headers are the same as the headers in the Grid, see -@ref{Char Group}. The appearance of the menu can be customized: - -@vtable @code -@item x-symbol-local-menu -With a valid token language, the X-Symbol menu only contains insertion -commands for valid characters. The entries are mentioned and sorted -according to the token. Otherwise, the X-Symbol menu contains all -characters, the entries are mentioned according to their charsym name. - -@item x-symbol-menu-max-items -The submenus do not contain more than 30 insertion commands for X-Symbol -characters. A submenu is split if necessarily. -@end vtable - -Input method Menu also works if X-Symbol mode is not enabled. It uses -the common interpretation of prefix arguments for X-Symbol insert -commands, see @ref{Introducing Input Methods}. - -@c =========================================================================== - -@node Input Method Grid, Input Method Keyboard, Input Method Menu, Input Methods -@comment node-name, next, previous, up -@section Input Method Grid: Choose Highlighted Character -@cindex Input Method Grid -@cindex Grid, Input Method -@cindex Table of Characters -@cindex Highlighted Character - -Probably the easiest way to insert a character is by using a @dfn{Grid} -of characters: - -@table @kbd -@item M-x x-symbol-grid -@itemx C-= C-= -@findex x-symbol-grid -@kindex C-= C-= -Pops up a buffer displaying X-Symbol characters in a grid like fashion. -You can select a character with the mouse or @kbd{@key{RET}}, see below. -@end table - -In the Grid buffer and the buffer with the possible completions for an -X-Symbol key sequence (@pxref{Input Method Keyboard}), the following -commands are used if the mouse pointer is over an highlighted character. - -@table @kbd -@item @key{button2} -@itemx @key{RET} -@itemx @key{SPC} -@c @itemx x-symbol-list-selected -@kindex @key{button2} -@kindex @key{RET} -@kindex @key{SPC} -@c @findex x-symbol-list-selected -Insert highlighted character (or character under point, respectively) -into the buffer of @code{point} if @code{point} is not in the same -buffer as the highlighted character. Otherwise, insert the character -into the reference buffer, i.e., the buffer where you have invoked the -grid or the key completions from. (The reference to the buffer is -erased when an X-Symbol character is inserted into any buffer.) - -@item @key{button3} -@kindex @key{button3} -Pops up a highlight menu where you can select to insert the token of -various token languages instead the character itself. In order not to -load and initialize all additional token language you have not yet used, -the menu offers to do so explicitly for supported (registered) token -languages (@pxref{Token Language}). -@end table - -Over all non-highlighted parts, the following commands are used: - -@table @kbd -@item @key{button2} -@kindex @key{button2} -@c @findex x-symbol-list-selected -Scroll Grid or Key Completions buffer down in upper half of the window -and scroll up in the lower half of the window. - -@item @key{button3} -@kindex @key{button3} -Pops up the X-Symbol menu, @ref{Input Method Menu}). -@end table - -When using the keyboard to select a character, the following command -could be useful: - -@table @kbd -@item M-x x-symbol-list-info -@itemx ? -@itemx h -@itemx i -@findex x-symbol-list-info -@kindex ? -@kindex h -@kindex i -Display info for character under point in echo area. - -@item M-x x-symbol-list-bury -@itemx q -@findex x-symbol-list-bury -@kindex q -Bury list buffer while trying to use the old window configuration. -@end table - -You can control the grid by the following variables: - -@vtable @code -@item x-symbol-local-grid -With a valid token language, the Grid only contains insertion commands -for valid characters and might use a coloring scheme. Otherwise, it -contains all characters. - -@item x-symbol-temp-grid -Inserting an X-Symbol character does not restore the window -configuration current before the invocation of the Grid. - -@item x-symbol-grid-reuse -Use old Grid when invoking command @code{x-symbol-grid}, if this is -reasonably to do. If @code{x-symbol-grid} is called with a prefix -argument, always create new Grid. - -@item x-symbol-grid-ignore-charsyms -The Grid does not contain @code{nobreakspace}. - -@item x-symbol-grid-tab-width -The tab width in the Grid buffer should correspond the font in -@code{x-symbol-heading-face} which is also used as the default font in -the Grid buffer. - -@item x-symbol-heading-strut-glyph -Use larger interline spacing if a line in the Grid starts with a header. -@end vtable - -The headers in the Grid are the same as the submenu headers, see -@ref{Char Group}. Similar looking characters for one headers are -grouped together. @xref{Input Method Context}. - -Input method Grid also works if X-Symbol mode is not enabled. It uses -the common interpretation of prefix arguments for X-Symbol insert -commands, see @ref{Introducing Input Methods}. - -@c =========================================================================== - -@node Input Method Keyboard, Input Method Context, Input Method Grid, Input Methods -@comment node-name, next, previous, up -@section Input Method Keyboard: Compose Key Sequence -@cindex Input Method Keyboard -@cindex Keyboard, Input Method - -Key sequences starting with @kbd{C-=} (@pxref{Introducing Input -Methods}) are used to insert X-Symbol characters, e.g., @kbd{C-= ~ >} -inserts @code{leadsto}. The Ascii sequence of the keys after @kbd{C-=} -look similar to the character which you are going to insert. It is the -same as the sequence which is replaced by input method Context, see -@ref{Input Method Context}. - -If many characters are represented by the same Ascii sequence, the -binding is extended by @samp{1}, @samp{2} and so on. If you do not know -how to continue your key sequence, the following commands might be -useful: - -@table @kbd -@item M-x x-symbol-help -@itemx C-= @var{zero-or-more-keys} @key{help} -@itemx C-= @var{zero-or-more-keys} C-h -@findex x-symbol-help -@kindex C-= @key{help} -@kindex C-= C-h -@kindex @key{help} -@kindex C-h -Pops up a buffer displaying possible completions for the key sequence -@kbd{C-= @var{zero-or-more-keys}}. You do not have to type the key -sequence again, i.e., @kbd{C-= @var{zero-or-more-keys}} is also used for -the next input. - -@item C-= @var{zero-or-more-keys} @key{button1} -@itemx C-= @var{zero-or-more-keys} @key{button2} -@itemx C-= @var{zero-or-more-keys} @key{button3} -@kindex @key{button1} -@kindex @key{button2} -@kindex @key{button3} -Use the normal bindings of @kbd{@key{button1}}, @kbd{@key{button2}} or -@kbd{@key{button3}}, respectively (@pxref{Input Method Grid}). The key sequence -is not used for the next input. - -@item C-= @var{zero-or-more-keys} M-@key{prior} -@itemx C-= @var{zero-or-more-keys} M-@key{next} -@itemx C-= @var{zero-or-more-keys} M-@key{home} -@itemx C-= @var{zero-or-more-keys} M-@key{end} -@kindex M-@key{prior} -@kindex M-@key{next} -@kindex M-@key{home} -@kindex M-@key{end} -Execute the commands @code{scroll-other-window-down}, -@code{scroll-other-window}, @code{beginning-of-buffer-other-window} or -@code{end-of-buffer-other-window}, respectively. You do not have to -type the key sequence again, i.e., @kbd{C-= @var{zero-or-more-keys}} is -also used for the next input. -@end table - -@vtable @code -@item x-symbol-temp-help -Inserting an X-Symbol character restores the window configuration -current before the invocation of the Grid. - -@item x-symbol-map-default-keys-alist -Defines the bindings mentioned above. -@end vtable - -Input method Keyboard also works if X-Symbol mode is not enabled. It -uses the common interpretation of prefix arguments for X-Symbol insert -commands, see @ref{Introducing Input Methods}. - -@c =========================================================================== - -@node Input Method Context, Input Method Electric, Input Method Keyboard, Input Methods -@comment node-name, next, previous, up -@section Input Method Context: Replace Char Sequence -@cindex Context, Input Method -@cindex Input Method Context -@cindex Character Sequence Input -@cindex Ascii Sequence Input -@cindex Modify Chain -@cindex Rotate Chain -@cindex Greek Input - -The idea of the input method @dfn{Context} is to replace a sequence of -characters by a character which looks similar to the whole sequence. If -the sequence consists only of Ascii characters, it is also used for the -key bindings, see @ref{Input Method Keyboard}. - -There will be some info in the echo area that the character sequence -before point can be replace via input method Context. The following -commands are provided: - -@table @kbd -@item M-x x-symbol-modify-key -@itemx C-, -@itemx C-= @key{left} -@itemx C-= @key{right} -@findex x-symbol-modify-key -@kindex C-, -@kindex C-= @key{left} -@kindex C-= @key{right} -If character before point is an X-Symbol character, ``modify'' it to an -alternative character (if you do it often enough, you are back at your -first character). Otherwise replace sequence of characters by a -character which looks similar to the whole sequence. - -@item M-x x-symbol-rotate-key -@itemx C-. -@itemx C-= @key{up} -@itemx C-= @key{down} -@findex x-symbol-rotate-key -@kindex C-. -@kindex C-= @key{up} -@kindex C-= @key{down} -If character before point is an X-Symbol character, ``rotate'' its -``direction'' (or change uppercase/lowercase). -@end table - -Both commands can also be used to resolve a character alias before -point, see @ref{Char Aliases}. If the region is active, restrict -replacement to use that region since the input method Context only -considers the longest sequence of characters with a replacement. - -Input method Context can be customized by changing the following -variables: - -@vtable @code -@item x-symbol-rotate-prefix-alist -If you provide a prefix argument to command @code{x-symbol-rotate-key}, -you can specify the direction you want to have: it is according to -numerical keypads, e.g., with prefix argument @samp{7} you specify the -direction ``north-west''. - -@item x-symbol-rotate-suffix-char -Command @code{x-symbol-rotate-key} is also used to ``Greekify'' the -previous character: typing @kbd{a C-.} is shorter than @kbd{a # C-,}. - -@item x-symbol-context-ignore -Constrains whether a context/charsym can be replaced. No constraints by -default. - -@item x-symbol-context-init-ignore -Contexts starting with a space cannot be replaced. This variable must -be set before X-Symbol has been initialized. -@end vtable - -@c =========================================================================== - -@node Input Method Electric, Input Method Quail, Input Method Context, Input Methods -@comment node-name, next, previous, up -@section Input Method Electric: Automatic Context -@cindex Input Method Electric -@cindex Electric, Input Method -@cindex Aggressive Context @c 2.6 -@cindex Automatic Context - -The idea of input method @dfn{Electric} is to have the input method -Context (@pxref{Input Method Context}) do its replacement automatically. -X-Symbol automatically replaces some character sequences of input method -Context by the X-Symbol character as soon as the last character in the -sequence of the sequence has been pressed. - -Input method Electric has nothing to do with the display of -super-/subscripts (@pxref{Super and Subscripts}). - -You might want to press @kbd{C-/} or @kbd{C-x u} to undo the -replacement. Input method Electric requires X-Symbol mode to be -enabled, it can be disabled (and re-enabled) by setting the following -variable: - -@vtable @code -@item x-symbol-electric-input -A boolean which can also be changed via the X-Symbol menu. -@end vtable - -To make input method Electric useful and not annoying, several -conditions must be met for X-Symbol to do the auto-replacement: - -@itemize @bullet -@item -Not all contexts will be replaced automatically. E.g., while input -method Context allows both pre- and postfixes for accented characters, -@kbd{:} and @kbd{'} only act as prefixes, and @kbd{`} and @kbd{~} only -as postfixes for input method Electric, since these are the combinations -where those characters are quite likely not used literally. - -@item -The character must be valid in the current token language, see -@ref{Introducing Input Methods}. - -@item -All characters of the context have been typed without any other command -in between, e.g., @kbd{- >} inserts @code{arrowright}, "- @key{left} -@key{right} > simply inserts @samp{->}. - -@item -No prefix argument has been used for any character in the context. - -@item -The electric context must not be a suffix of a longer valid context for -another character. E.g., @kbd{' ' o} does not insert -@samp{'@code{oacute}} because @samp{''o} is the context for -@code{ohungarumlaut} (which cannot be inserted by input method -Electric). - -@item -It should be ``allowed'' to change the context to the character via -input method Context. - -@item -Individual contexts/charsyms can be disabled by setting the following -variables: - -@vtable @code -@item x-symbol-electric-ignore -The context should neither be @samp{'s} (this would be annoying when -writing English), nor include a space. If you want to disable input -method Electric for all accented characters, use - -@lisp -(setq x-symbol-electric-ignore - "[ \t]\\|[A-Za-z][~`]\\|[:'][A-Za-z]") -@end lisp - -@item x-symbol-@var{lang}-electric-ignore -Individual contexts/charsyms can be disabled for each token language -@var{lang}. -@end vtable -@end itemize - -@c =========================================================================== - -@node Input Method Quail, Customizing Input Method, Input Method Electric, Input Methods -@comment node-name, next, previous, up -@section Input Method Quail: a Mule Input Method -@cindex Input Method Quail -@cindex Mule Input Method - -Another way to insert a characters is by using the Emacs/Mule -multilingual text input method ``x-symbol'' (@pxref{Input -Methods,,,xemacs,XEmacs User's Manual}).. - -Again, the Ascii sequence used there is the same as the sequence which -is replaced by input method Context, see @ref{Input Method Context}. A -one-letter key sequence is extended by @key{;}. - -If input method Quail is selected for a buffer, input method Electric -(@pxref{Input Method Electric}) is disabled in that buffer. - -@c TODO: more - -@c =========================================================================== - -@node Customizing Input Method, , Input Method Quail, Input Methods -@comment node-name, next, previous, up -@section Customizing Input Methods -@cindex Customizing Method Internals -@cindex Input Methods Customization - -You may safely define key bindings not using the @code{x-symbol-map} -(i.e., starting with @kbd{C-=}). E.g., for @code{alpha} on @kbd{A-a} , -use - -@lisp -(global-set-key [(alt a)] 'x-symbol-INSERT-alpha) -@end lisp - -Please note that the command @code{x-symbol-INSERT-alpha} is not defined -before the main file (@file{x-symbol}) in the package has been loaded -(if you really need it, function @code{autoload} is your friend). - -Other possibilities to customize the input methods are by setting the -following variables: - -@vtable @code -@item x-symbol-header-groups-alist -Defines the groups whose characters appear after that header in the Grid -and in submenus with that header. @xref{Char Group}. Extra variables -exists for the language dependent Grid and Menu. - -@item x-symbol-group-input-alist -@itemx x-symbol-user-table -These are variables which are used to compute the input definitions. -While this kind of indirection might seem complicated to you (it is), it -actually ensures consistency across all input methods. @xref{Defining -Input Methods}. - -For example., if you prefer charsym @code{epsilon1} over @code{epsilon} -(influences input method , -you might want to use: - -@lisp -@group -(setq x-symbol-user-table - '((epsilon1 t (greek1 "e" nil "epsilon") nil -3000))) -@end group -@end lisp - -@item x-symbol-list-mode-hook -Additional functions to execute after setting up the Grid and Key -Completions buffer. - -@item x-symbol-after-init-input-hook -You can change the input methods directly by functions in these hooks. -@end vtable - -@c =========================================================================== - -@node Features, Supported Languages, Input Methods, Top -@comment node-name, next, previous, up -@chapter Features of Package X-Symbol -@cindex Features of X-Symbol -@cindex Supported Features - -Package X-Symbol not only provides input methods for X-Symbol -characters, it also provides more features which support an easy and -comfortable preparation of documents. - -@menu -* Super and Subscripts:: Use special fonts for super-/subscripts. -* Images:: Images after image insertion commands. -* Info:: Display information in echo area. -* Ascii Representation:: Derive label from a buffer contents. -* Package Information:: Invoke info system, use WWW browser. -@end menu - -@c =========================================================================== - -@node Super and Subscripts, Images, Features, Features -@comment node-name, next, previous, up -@section Super- and Subscripts -@cindex Superscripts -@cindex Subscripts -@cindex Invisible, Revealing -@cindex Point, Invisible -@cindex Cursor, Invisible -@cindex Keywords for Subscripts - -Package X-Symbol displays the characters inside super-/subscript -commands in a way to make them look like super-/subscripts. It also -marks the super-/subscript command itself as invisible, so you don't see -it on the screen. For example, the three characters @samp{a^2} in the -buffer are @emph{displayed} as an @samp{a} and a raised, smaller -@samp{2}---the @samp{^} is still in the buffer. - -Therefore, the display of super- and subscripts has nothing to do with -Input Method Electric (@pxref{Input Method Electric}). - -Do not confuse the special Latin characters @code{twosuperior}, -@code{threesuperior}, @code{ordfeminine} and @code{masculine} with the -characters @samp{2}, @samp{3}, @samp{a} and @samp{o} when displayed as -superscripts. You might notice that the characters look a bit -different, but to help you seeing the difference, X-Symbol will display -an info in the echo area (@pxref{Info}) for the special Latin -characters when point is before or after the character in question. - -X-Symbol only displays the innermost super- and subscripts, since we -would need even more additional fonts otherwise. It is also restricted -to display single-line super- and subscripts. - -The display of super- and subscripts requires @code{font-lock} to be -enabled (@pxref{Role of font-lock}). - -Super- and subscripts are by default enabled if the they are defined for -the token language and it would be appropriate to turn on X-Symbol -automatically for the current buffer (@pxref{Minor Mode}). They can be -disabled (and re-enabled) by setting the following buffer-local -variable: - -@vtable @code -@item x-symbol-subscripts -A boolean which can also be changed via the X-Symbol menu. -@end vtable - -As mentioned before, X-Symbol marks the super-/subscript command itself -as invisible, except when point is directly before, inside or directly -after this command. During the time where this this is the case, -X-Symbol makes the super-/subscript command reappear and highlights it -with pink. This feature can be disabled (and re-enabled) by setting the -following variables: - -@vtable @code -@item x-symbol-reveal-invisible -A boolean which can also be changed via the X-Symbol menu. - -@item x-symbol-revealed-face -The face used for the super-/subscript command when revealed. - -@item x-symbol-idle-delay -Time in seconds of idle time before revealing invisible characters. -@end vtable - -Super-/subscript commands are @code{^}/@code{_} (@pxref{TeX Macro}) and -@code{<sup>}/@code{<sub>} (@pxref{SGML Entity}): - -@vtable @code -@item x-symbol-@var{lang}-font-lock-keywords -The super-/subscript @code{font-lock} keywords for each token language -@var{lang}. -@end vtable - -@c =========================================================================== - -@node Images, Info, Super and Subscripts, Features -@comment node-name, next, previous, up -@section Images at the end of Image Insertion Commands -@cindex Images -@cindex Glyphs - -@pindex convert -Package X-Symbol can display @dfn{images} at the end of image insertion -commands. They show thumbnails (scaled-down version of the image) for -the included image files (using @code{convert}, @pxref{Installing Image -Converter}). Using the middle mouse button invokes the image editor for -the image under the mouse pointer. - -@menu -* Image Display:: When to display images. -* Image Conversion:: Producing a scaled-down image. -* Image Caching:: Speeding up the image processing. -* Special Images:: Signaling specific situations. -* Image Editor:: Editing the original image file. -@end menu - - -@node Image Display, Image Conversion, Images, Images -@comment node-name, next, previous, up -@subsection Display of Images -@cindex Image Display -@cindex Image Control -@cindex Image Commands -@cindex Controlling Images -@cindex Image Keywords -@cindex Keywords for Images - -The display of images is by default enabled if the image commands are -defined for the token language and it would be appropriate to turn on -X-Symbol automatically for the current buffer (@pxref{Minor Mode}). It -can be disabled (and re-enabled) by setting the following buffer-local -variable: - -@vtable @code -@item x-symbol-image -A boolean which can also be changed via the X-Symbol menu. -@end vtable - -Image commands are @code{\includegraphics} and others (@pxref{TeX -Macro}), and @code{<img>} (@pxref{SGML Entity}): - -@vtable @code -@item x-symbol-@var{lang}-image-keywords -The keywords (image commands & arguments) for each token language -@var{lang}. -@end vtable - -File names in the image commands must be interpreted correctly. They -can be: - -@itemize @minus -@item -@dfn{absolute}, start with @samp{/} or @samp{~}, -@item -@dfn{explicitly relative}, start with @samp{./} or @samp{../}, -@item -@dfn{implicitly relative}, assumed otherwise, e.g., @file{image.eps}, or -@item -special, like having some special URL prefix like @file{http:} or @file{ftp:}. -@end itemize - -Relative file names can be relative to some @dfn{master directory} -(usually the current directory of the file) or to directories in some -@dfn{search path} (only used with token language @code{tex}): - -@vtable @code -@item x-symbol-@var{lang}-master-directory -The master directory for each token language @var{lang}. - -@item x-symbol-@var{lang}-image-searchpath -The image search path for each token language @var{lang}. Defaults to -the current directory. - -@item x-symbol-image-searchpath-follow-symlink -Directories in the search path ending with @file{//} (double slash) are -recursive: all subdirectories not starting with a dot are also included -in the search path. If this variable has value @code{nil} (the -default), subdirectories which are symbolic links are not included. -@end vtable - -For details, see the section of the individual token languages -(@pxref{Supported Languages}). - - -@node Image Conversion, Image Caching, Image Display, Images -@comment node-name, next, previous, up -@subsection Image Conversion -@cindex Image Conversion -@cindex Converting Images -@cindex Colormap -@cindex Image Cache File - -The file mentioned inside the image insertion command is not used -directly to display the image after the command. The image might be too -big, it might use too many colors or the image format might not be -supported by Emacs. Therefore, it is converted to an @dfn{image cache -file}, see @ref{Image Caching}. - -@vtable @code -@item x-symbol-image-max-width -The image is not wider than 120 points. - -@item x-symbol-image-max-height -The image is not higher than 80 points. - -@item x-symbol-image-convert-colormap -Colormap used in function @code{x-symbol-image-convert-colormap} below. -A colormap is a normal image whose colors are the only ones used for -producing other images. The distribution of package X-Symbol includes -two colormaps: @file{etc/colormap138.xpm} and @file{etc/colormap66.xpm}. - -@item x-symbol-image-colormap-allocation -Package X-Symbol allocates the colors of the colormap at start-up and -prevents them to be de-allocated. - -@item x-symbol-image-converter -@pindex convert -Program @code{convert} from ImageMagick is used to convert the images -(@pxref{Installing Image Converter}). Set this variable to @code{nil}, -if you don't want to convert images. - -The following variables controls the invocation of the program -@code{convert} from ImageMagick: - -@vtable @code -@item x-symbol-image-convert-program -The name of the program @code{convert}, it is -@samp{C:\\ImageMagick\\convert} when running on Windows and -@samp{convert} otherwise. - -@item x-symbol-image-convert-file-alist -Program @code{convert} needs to be told that @file{@var{file}.pstex} is -a Postscript file. -@end vtable - -The following functions are possible values in -@code{x-symbol-image-converter}: - -@ftable @code -@item x-symbol-image-start-convert-mono -Produces monochrome images. Used if your device has less than 32 -colors. - -@item x-symbol-image-start-convert-truecolor -Produce images with original colors. Used if your device has more than -767 colors. - -@item x-symbol-image-start-convert-color -Produce images with maximal four colors (just four because different -images might use a different sets of colors). Used otherwise without a -colormap. - -@item x-symbol-image-start-convert-colormap -Produce image with colors from the colormap. Used otherwise with a -colormap. - -@vtable @code -@item x-symbol-image-convert-mono-regexp -Function @code{x-symbol-image-start-convert-colormap} just produces -monochrome images for temporary image cache files (@pxref{Image -Caching}) since @code{convert} is slower when using a colormap. -@end vtable -@end ftable -@end vtable - - -@node Image Caching, Special Images, Image Conversion, Images -@comment node-name, next, previous, up -@subsection Image Caching -@cindex Image Caching -@cindex Caching of Images -@cindex Glyph Caching -@cindex Memory Cache for Images -@cindex File Cache for Images - -Editing would be extremely slow, if an image cache file would be -produced every time an image insertion command has been recognized. -Therefore, package X-Symbol uses the following techniques: - -@itemize @bullet -@item -It uses an asynchronous process to create the image cache file. You can -edit your file during the conversion. - -@item -It uses a @dfn{file cache}: image cache file can be kept for future -Emacs sessions. - -@item -It uses a @dfn{memory cache}: images from the most common file names are -cached in a buffer-local memory cache. The cached is initialized when -parsing the whole buffer for image keywords. Rescan the buffer if you -want to display the the images of new image files by using the following -command: - -@table @kbd -@item M-x x-symbol-image-parse-buffer -@findex x-symbol-image-parse-buffer -Parse the buffer to recognize image insertion commands. Usually, this -is done automatically. -@end table -@end itemize - -File and memory caching can be controlled by the following variables: - -@vtable @code -@item x-symbol-image-update-cache -The image cache is automatically updated if it does not exist yet or if it -is older than the corresponding image file. - -@item x-symbol-image-cache-directories -Cache files for images in your home directory are stored in directory -@file{~/.images/}, e.g., image @file{~/d/img.eps}, is cached in -@file{~/.images/d/img.png}. - -Images outside your home directory are just temporarily cached, or not -displayed at all if they cannot be stored in the memory cache. - -You could also specify that the cache files uses a relative -subdirectory, e.g., that @file{~/d/img.eps} is cached in -@file{~/d/.img/img.eps} or that the image is not displayed at all. - -@item x-symbol-image-temp-name -Temporary image files are stored in a temporary directory (@file{/tmp/}) -having some unique name. They are not supported on Emacs. - -@item x-symbol-image-use-remote -Package X-Symbol only displays images which can be stored in the memory -cache. With value @code{t}, it tries to find the image file during -editing (ignoring the search path for speed, though). Editing lines -with image files not in the memory cache would be slow, since file -accesses are necessary for every command. -@end vtable - -The memory cache only stored image file from the current directory or -some standard image directories like @file{figures/} (@pxref{TeX -Macro}), or @file{images/} or @file{pictures/} (@pxref{SGML Entity}). -Otherwise, the image file is considered similar to remote files: - -@vtable @code -@item x-symbol-@var{lang}-image-cached-dirs -The directories with images which are stored in the memory cache. Can -be separately defined for each token language @var{lang}. -@end vtable - - -@node Special Images, Image Editor, Image Caching, Images -@comment node-name, next, previous, up -@subsection Special Images for Specific Situations -@cindex Special Images -@cindex Images for Specific Situations -@cindex Glyph for Specific Situations - -If package X-Symbol cannot display images representing the included -image files, it uses special images instead: - -@itemize @bullet -@item -@dfn{Remote:} An Escher knot is displayed if the file is remote or if -the image cannot be cached in the memory cache, see @ref{Image Caching}. - -@item -@dfn{Junk}: A recycle sign is displayed if there is no image converter -(@pxref{Image Conversion}), if it should not use a file cache or if the -file cache cannot be written. - -@item -@dfn{Locked:} A terminal with a lock is displayed if the image cache file -cannot be read or written. - -@item -@dfn{Design:} An ink pen is displayed if the image file does not exist. - -@item -@dfn{Create:} An hour glass is displayed used during the creation of the -image cache file, an old image cache is used instead if it exists. - -@item -@dfn{Broken:} A tombstone is displayed if the creation of the image -cache file has failed. -@end itemize - -To customize the glyphs for the special images, use: - -@vtable @code -@item x-symbol-image-data-directory -Directory of files for the special images. - -@item x-symbol-image-special-glyphs -File names of special images and their image format. -@end vtable - - -@node Image Editor, , Special Images, Images -@comment node-name, next, previous, up -@subsection Image Editor -@cindex Image Editor -@cindex Editing Image Files -@cindex Designing Images -@cindex Scale Factor, Images -@cindex Image Highlight Menu - -If you move the mouse pointer to an image insertion command or its -image, it is highlighted. - -@table @kbd -@item @key{button2} -@kindex @key{button2} -Start image editor for highlighted image. If the image is searched in -the searchpath (@pxref{Image Caching}), edit first existing image file. -If no image exists, open a new file in the first directory of the -searchpath. - -@item @key{button3} -@kindex @key{button3} -Pop up the @dfn{image highlight menu}. You can rescan the buffer for -image insertion commands (@pxref{Image Display}). - -It also displays all directories in the searchpath if the file name is -implicitly relative, or the current directory otherwise. Selecting a -directory starts the image editor in that directory (relatively to that -directory if the file name has a directory part). - -@item M-x x-symbol-image-editor -@findex x-symbol-image-editor -Start image editor. Asks for the image file. -@end table - -You can control which editor to use: - -@vtable @code -@item x-symbol-image-editor-alist -@pindex display -@pindex xfig -Normally, program @code{display} is used to edit the highlighted image -file. But for image names @file{@var{file}.eps}, @file{@var{file}.ps} -or @file{@var{file}.pstex}, program @code{xfig} is invoked with -@file{@var{file}.fig}. It also uses a scale method, e.g., with -@file{img.80.eps}, we edit @file{img.fig} (which should be exported with -scale=80%). - -@item x-symbol-image-scale-method -If a scale method is used for a file name and the file name without -extension ends with a dot and two digits, these three characters are -removed from the file name. - -@item x-symbol-image-current-marker -Directories with an existing image for the specified file name are -marked with an @samp{*}. The first of these represents the file which -is used when pressing @kbd{@key{button2}}. -@end vtable - -@c =========================================================================== - -@node Info, Ascii Representation, Images, Features -@comment node-name, next, previous, up -@section Info in Echo Area -@cindex Info in Echo Area -@cindex Echo Area Info -@cindex Character Info -@cindex Context Info -@cindex Minibuffer Info - -The echo area (@pxref{Echo Area,,,xemacs,XEmacs User's Manual}) is -used by X-Symbol to give some information about the character around -point, and whether there is a context before point which can be replaced -by input method Context (@pxref{Input Method Context}). - -It will be controlled by the following variables (also to be found in -the menu): - -@vtable @code -@item x-symbol-character-info -A three-value variable which controls whether to display some info for -the character after or around point. The info for the character after -point includes the character itself and the following infos: - -@itemize @minus -@item -the token of the current language, eventually colored according to some -coloring scheme (@pxref{Char Group}), - -@item -infos using the token classes (@pxref{Char Group}), which could inform -users to include a specific La@TeX{} package when they want to use that -character in the document, - -@item -the codings in which the characters is considered to be a 8bit character -(@pxref{File Coding}), and - -@item -the key bindings (@pxref{Input Method Keyboard}). -@end itemize - -@item x-symbol-context-info -If X-Symbol mode is on and some conditions are met, display some info -for the character which would replace the context before point when -pressing @kbd{C-,} (@pxref{Input Method Context}). It can be controlled -by the following variables: - -@vtable @code -@item x-symbol-context-info-ignore -@findex x-symbol-default-context-info-ignore -The default value @code{x-symbol-default-context-info-ignore} makes the -following variables control whether to display the context info. - -@item x-symbol-context-info-threshold -The context does not consist of a single character. - -@item x-symbol-context-info-ignore-regexp -The context does not solely consist of letters. - -@item x-symbol-context-info-ignore-groups -The context is not replaced by an accented character, see @ref{Char -Group}. -@end vtable - -@item x-symbol-idle-delay -Time in seconds of idle time before showing the info. -@end vtable - -@c ==================================================================== - -@node Ascii Representation, Package Information, Info, Features -@comment node-name, next, previous, up -@section Ascii Representation of Strings -@cindex Ascii Representation -@cindex Representation of Characters -@cindex Label Creation - -@pindex reftex -If you want to derive labels from a buffer contents (provided e.g., by -Emacs packages @code{reftex} or @code{bibtex}), you need a Ascii -representation of strings containing X-Symbol characters. This is -provided by the following function: - -@ftable @code -@item x-symbol-translate-to-ascii -Takes a string and returns a string only consisting of Ascii characters. - -@vtable @code -@item x-symbol-charsym-ascii-alist -You might want to define the German way to Asciify accented characters -by: -@lisp -@group -(setq x-symbol-charsym-ascii-alist - '((adiaeresis . "ae") (Adiaeresis . "Ae") - (odiaeresis . "oe") (Odiaeresis . "Oe") - (udiaeresis . "ue") (Udiaeresis . "Ue"))) -@end group -@end lisp - -@item x-symbol-charsym-ascii-groups -By default, ``Ascii''fying accented characters means removing the -accents. Other characters have built-in Ascii representation, e.g, -@code{sigma1} has the Ascii representation @samp{sigma}. -@end vtable -@end ftable - -@c ==================================================================== - -@node Package Information, , Ascii Representation, Features -@comment node-name, next, previous, up -@section X-Symbol Package Information -@cindex Package Information -@cindex WWW Browsing -@cindex URL for X-Symbol - -@table @kbd -@item M-x x-symbol-package-info -@findex x-symbol-package-info -Read documentation for package X-Symbol in the info system. - -@item M-x x-symbol-package-web -@findex x-symbol-package-web -Ask a WWW browser to load the URL of package X-Symbol. - -@item M-x x-symbol-package-bug -@findex x-symbol-package-bug -Use this command to contact the maintainer of package X-Symbol @emph{in -any case}, e.g., for suggestions, bug and problem reports, see @ref{Bug -Reports}. Use @kbd{C-u 9 M-x x-symbol-package-bug} for patches -(including corrections of this manual, which are strongly appreciated) -and for other messages. -@end table - -@vtable @code -@item x-symbol-installer-address -E-mail address of the person who has installed package X-Symbol -system-wide (@pxref{System-wide Installation}). - -@item x-symbol-package-url -URL of package X-Symbol, used by @code{x-symbol-package-web}. -@end vtable - -@c ==================================================================== - -@node Supported Languages, X-Symbol Internals, Features, Top -@comment node-name, next, previous, up -@chapter Supported Token Languages -@cindex Supported Languages -@cindex Default Languages -@cindex Built-in Languages -@cindex Provided Languages -@cindex Languages in Distribution - -The chapter describe the predefined token language. It also presents -the language specific behavior for @ref{Concepts}, @ref{Input Methods}, -and @ref{Features}. - -@menu -* Pseudo Language:: Token language ``x-symbol charsym''. -* TeX Macro:: Token language @code{tex}. -* SGML Entity:: Token language @code{sgml}. -* BibTeX Macro:: Token language @code{bib}. -* TeXinfo Command:: Token language @code{texi}. -* External Languages:: Languages defined in other Emacs Packages. -@end menu - -@c ==================================================================== - -@node Pseudo Language, TeX Macro, Supported Languages, Supported Languages -@comment node-name, next, previous, up -@section Pseudo Token Language ``x-symbol charsym'' -@cindex Pseudo Language -@cindex Charsym -@cindex X-Symbol Charsym - -If no (or an invalid) token language is set for a buffer, the info in -the echo area (@pxref{Info}) for a X-Symbol Character in the buffer (if -it exists) uses the name of its @dfn{charsym}. In this manual, we -actually refer to X-Symbol characters by their charsym name, e.g., -@code{alpha}. - -A charsym is a symbol which is used internally to represent a X-Symbol -character. Charsyms are used instead characters in all user variables -of package X-Symbol. - -The highlight menu of the Grid (@pxref{Input Method Grid}) also offers -to insert a charsym name. Charsyms can also be used for input method -Read Token, see @ref{Input Method Read Token}. - -You cannot use this pseudo language to turn on the X-Symbol minor mode -(@pxref{Minor Mode}), you cannot decode charsyms to their characters, and -you cannot encode characters to charsyms. - -@c =========================================================================== - -@node TeX Macro, SGML Entity, Pseudo Language, Supported Languages -@comment node-name, next, previous, up -@section Token Language ``@TeX{} macro'' (@code{tex}) -@cindex Token Language @code{tex} -@cindex Language @code{tex} -@cindex @TeX{} macro -@cindex @code{tex} -@cindex La@TeX{} - -For buffers using the major mode @code{latex-mode}, @code{tex-mode} or -@code{plain-tex-mode}, we use token language @dfn{@TeX{} macro} -(@code{tex}). This language provides the display of super-/subscripts -and images. If the buffer visits a file with extension @file{.tex}, -X-Symbol mode is automatically turned on. - -@menu -* TeX Macro Basics:: Basics of language ``@TeX{} macro''. -* TeX Macro Features:: Super-/subscripts and images in La@TeX{}. -* TeX Macro Problems:: Problems with @TeX{} macros. -* TeX Macro Conversion:: How the conversion of @TeX{} macros works. -* TeX Macro Symbols:: Extra Symbols of Language ``@TeX{} Macro''. -@end menu - - -@node TeX Macro Basics, TeX Macro Features, TeX Macro, TeX Macro -@comment node-name, next, previous, up -@subsection Basics of Language ``@TeX{} macro'' -@cindex TeX Macro Basics -@cindex Basics TeX Macro -@cindex Choosing TeX Macro -@cindex TeX Macro Use -@cindex TeX Macro Modes - -The standard behavior can be controlled by the following variables: - -@vtable @code -@item x-symbol-tex-modes -@itemx x-symbol-tex-auto-style -The variables known from @ref{Minor Mode}. If the buffer visits a file -with extension @file{.tex}, super-/subscripts and images are displayed, -otherwise unique decoding (@pxref{Unique Decoding}) will be used. - -@item x-symbol-tex-auto-coding-alist -Used there to automatically deduce the specific encoding of the file -(@pxref{File Coding}) if the file visited by the buffer has the -extension @file{.tex}. It searches for one of the following two strings -in the current buffer, including the comment: - -@example -\usepackage[@var{encoding}]@{inputenc@} -%& -translation-file=i@var{enc} -@end example - -where @var{encoding} should be one of @samp{latin1}, @samp{latin2}, -@samp{latin3}, @samp{latin5}, or @samp{latin9}, and @var{enc} should be -one of @samp{l1} or @samp{l2}. 8bit characters are not encoded if the -file if the search was successful (@pxref{Controlling 8bit Coding}). - -@item x-symbol-tex-coding-master -@vindex TeX-master -If one of the above strings cannot be found in the current buffer, and -the current buffer has a buffer-local string value of @code{TeX-master}, -also search in the file denoted by that value for the strings. -(Buffer-local variables will not be inherited.) -@end vtable - -The input methods and the character info in the echo area are controlled -by: - -@vtable @code -@item x-symbol-tex-header-groups-alist -We use the standard Grid and Menu headers. - -@item x-symbol-tex-extra-menu-items -There is an extra menu item to remove the braces around text-mode -letters and other text-mode symbols. - -@item x-symbol-tex-electric-ignore -@itemx x-symbol-tex-electric-ignore-regexp -@pindex texmathp -Input method Electric (@pxref{Input Method Electric}) is disabled if the -character is not of the correct @TeX{} mode, i.e., it only produces a -math-mode character in a math area and a text-mode character in a text -area (this test requires package @code{texmathp}, @ref{LaTeX Packages}). -Postfix tilde is not electric, because @samp{~} produces a space in -@TeX{}. - -@item x-symbol-tex-token-suppress-space -Input method Token (@pxref{Input Method Token}) only converts a token -ending with a control word like @code{\i}, if the character following -the token is no letter. If that token is a text-mode token and a -@key{SPC} has been entered without a prefix argument, the @key{SPC} will -only perform the replacement, it will not insert a space, i.e., it will -act like @kbd{C-u 0 @key{SPC}}. - -@item x-symbol-tex-class-alist -@itemx x-symbol-tex-class-face-alist -Various token classes (@pxref{Char Group}) are defined. They are used -to give some info (@pxref{Info}) about the characters spacing behavior, -which La@TeX{} packages are necessary to use the character (@pxref{TeX -Macro Symbols}), and about the conversion (@pxref{TeX Macro -Conversion}). X-Symbol uses blue for text-mode only and purple for -math-mode only characters in the Grid (@pxref{Input Method Grid} and the -character info. -@end vtable - - -@node TeX Macro Features, TeX Macro Problems, TeX Macro Basics, TeX Macro -@comment node-name, next, previous, up -@subsection Super-/Subscripts and Images in La@TeX{} -@cindex TeX Macro Features -@cindex Features TeX Macro -@cindex TeX Macro Superscripts -@cindex TeX Macro Subscripts -@cindex TeX Macro Images - -The display of super- and subscripts (@pxref{Super and Subscripts}) is -controlled by: - -@vtable @code -@itemx x-symbol-tex-font-lock-limit-regexp -The superscript command @code{^} and the subscript command @code{_} is -recognized. The argument can be provided with and without braces. The -argument should not span more than one line and should not contain a -super-/subscript command. - -@item x-symbol-tex-font-lock-allowed-faces -The characters @samp{^} and @samp{_} are not always commands (@pxref{TeX -Macro Problems}), e.g., in the argument of @code{\ref}. X-Symbol uses -the usual syntax highlighting keywords to decide whether to recognize -these characters as super-/subscript commands: they are commands if they -are not highlighted or highlighted with the usual math-mode faces. - -This might lead to problems: @ref{FAQ No Subscripts}, @ref{FAQ Stupid -Subscripts}. Using @code{texmathp} (@pxref{LaTeX Packages}) has even -more problems: - -@itemize @minus -@item -The syntax highlighting (which is used for super-/subscripts) would be -much too slow. - -@item -With own La@TeX{} environments, you would need to customize -@code{texmathp}. - -@item -It is actually wrong: whether @samp{^} and @samp{_} are -super-/subscripts commands does not depend on whether we are in @TeX{}'s -math mode, it depends on its catcodes (which are changed by commands -like @code{\ref}). -@end itemize -@end vtable - -The display of images (@pxref{Images}) is controlled by: - -@vtable @code -@item x-symbol-tex-image-keywords -The following commands are recognized. Extension @var{ext} stands for -@file{eps} (which is the default extension for both versions of -@code{\includegraphics} if the extension is omitted there), @file{ps}, -@file{gif}, @file{png}, @file{jpeg}, @file{jpg}, or @file{pdf}. Options -@var{options} can be omitted with their surrounding brackets or -preceding comma, respectively. - -@example -\input@{@var{file}.pstex_t@} -\includegraphics[@var{options}][@var{options}]@{@var{file}.@var{ext}@} -\includegraphics*[@var{options}][@var{options}]@{@var{file}.@var{ext}@} -\epsfig@{file=@var{file}.@var{ext},@var{options}@} -\psfig@{file=@var{file}.@var{ext},@var{options}@} -\epsfbox[@var{options}]@{@var{file}.@var{ext}@} -\epsffile[@var{options}]@{@var{file}.@var{ext}@} -@end example - -@item x-symbol-tex-master-directory -@vindex TeX-master -Relative file names (@pxref{Image Display}, explicitly or implicitly) -are relative to the directory part of variable @code{TeX-master} if it -is buffer-local and a string. Otherwise, they are relative to the -directory of the current file. - -@item x-symbol-tex-image-searchpath -@vindex TEXPICTS -@vindex TEXINPUTS -Files with implicitly relative names are meant to be searched in a -search path. It defaults to the list of directories specified by the -environment variable @code{TEXPICTS} or @code{TEXINPUTS} (@pxref{TeX -environment variables,,,kpathsea,Kpathsea Manual}), -extended by @file{./} if necessary. - -Each directory in this list is used to expand the file name. The first -expansion naming a readable file is used. Relative directories in this -list are expanded in the master directory mentioned above. - -This mimics the standard behavior of @TeX{}, omitting the ``built-in'' -directories of the search path (@pxref{Path -sources,,,kpathsea,Kpathsea Manual}). - -@item x-symbol-tex-image-cached-dirs -The file name in the image command should not have a directory part or -the directory part should be @file{figures/} if the image should be -cached in the memory cache. -@end vtable - - -@node TeX Macro Problems, TeX Macro Conversion, TeX Macro Features, TeX Macro -@comment node-name, next, previous, up -@subsection Problems with @TeX{} Macros -@cindex TeX Macro Problems -@cindex Problems TeX Macro - -Like with other token languages, the conversion between characters and -@TeX{} macros induce the problem that we have two conflicting -requirements: we would like X-Symbol not to change the file when -visiting and saving a file, and we would like X-Symbol to use characters -for all corresponding macros. @xref{Unique Decoding}. - -The additional problem with @TeX{} macros is that there is no fixed and -simple definition of @TeX{} macros, and many users have their personal -@TeX{} style, while many users are probably not aware that the style -also influences @TeX{}'s typesetting: - -@itemize @bullet -@item -The tokens in @TeX{} are not ended by a dedicated character (like -@sc{sgml} entities are ended by @samp{;}). Instead, we need the next -char to decide whether a macro ends, which would be no problem if @TeX{} -would have a character which has no meaning except separating tokens -(like space in most programming languages). Unfortunately, this is not -the case: after an @dfn{control word} (an all-letter macro), a space has -no meaning, but it does produce a space in the output after characters -and other macros, except in math mode. - -During decoding, a text-mode control word has to be replaced either with -its trailing spaces or not be replaced at all. Since the number of -spaces can vary and X-Symbol does not remember the original @TeX{} -sequence of a character, X-Symbol would change the file if it would use -characters for all sequences. - -@item -During encoding, a space after a character in the buffer must produce a -space in the document output, since users normally do not care whether -the character is represented by a control word or not. Let us assume -that we (Bavarians) want to produce the output @samp{Ma@ss{}@ Bier}. -@ifinfo -In the info file, you will probably not see any 8bit characters (the -sharp @samp{s} is shown as @samp{@ss{}}). -@end ifinfo - -@itemize @minus -@item -Many people would use @samp{Ma\ss\@ Bier}. This is (almost ever) fine -in text mode, but a @samp{\@ } in math mode is not ignored (whereas the -spaces after characters are). If we have text- and math-mode control -word, we have a problem, since math-mode detection cannot work properly -without @TeX{} processing. - -@item -Many people would use @samp{Ma\ss@{@}@ Bier}. This has less problems and -is therefore used by X-Symbol. The @samp{@{@}} at the end of the control -word is not used if the character is not followed by a space, e.g., to -produce @samp{Stra@ss{}e}, we use @samp{Stra\ss@ e}. Consequently, -@samp{Ma\ss\@ Bier} in the file would be decoded to @samp{Ma@ss{}\@ Bier}, -which would be encoded to the original sequence in the file. - -@item -Some people would always use @samp{@{@}} after a text-mode control word, -even it is not followed by a space, like @samp{Stra\ss@{@}e}. This is -wrong, since it breaks ligatures and kerns. For example, compare the -output of @samp{\L@ V} with @samp{\L@{@}V} using @samp{T1} font encoding. - -@item -Up to Version 4.1, X-Symbol surrounded a text-mode control word with -braces, like @samp{Stra@{\ss@}e}. This was probably even worse than -always adding @samp{@{@}} at the end of the control word. It was used, -because it is required by Bib@TeX{} (@pxref{BibTeX Macro}). -Unfortunately, Bib@TeX{} sends this bad sequence directly to La@TeX{}, -but this has nothing to do with X-Symbol. -@end itemize - -@item -The accented characters are not represented by one tokens in @TeX{}. -Most people use @samp{\"a} to produce an @samp{@"a}, while some use -@samp{\"@{a@}}. X-Symbol uses the former, it does not even decode the -latter automatically. Up to Version 4.1, X-Symbol used @samp{@{\"a@}}, -having the same problems as using @samp{Stra@{\ss@}e}. - -@item -Around a dozen characters can be produced by more than one @TeX{} macro, -like @code{\neq} and @code{\ne}. Here, X-Symbol decodes both forms, -because it is probably a bad idea to redefine standard @TeX{} macros. -This will not be done with in style files (@pxref{Unique Decoding}). - -@item -In @TeX{}, you can change the lexer on the fly, i.e., in a strict sense, -any conversion is unsafe without @TeX{} processing. Since the most -likely change is to change the catcode of the character @samp{@@} to a -letter (used in La@TeX{}'s style files), this character is considered a -letter by X-Symbol. This means that although both @samp{\ss@ @@} and -@samp{\ss@@} usually produce the same output, only the first is decoded -to @samp{@ss{}@@}. - -@item -In @TeX{}, the definitions of macros can also change on the fly i.e., in -a strict sense, any conversion is unsafe without @TeX{} processing. -X-Symbol assumes that you do not do something like that except as done -by the standard La@TeX{} @code{\verb} command, and the @code{verbatim} -and @code{tabbing} environments. -@end itemize - - -@node TeX Macro Conversion, TeX Macro Symbols, TeX Macro Problems, TeX Macro -@comment node-name, next, previous, up -@subsection The Conversion of @TeX{} Macros -@cindex TeX Macro Conversion -@cindex Conversion of TeX Macros - -The @TeX{} macros for Latin characters are according to the La@TeX{} -package @file{inputenc.sty}, v0.97+. Package X-Symbol uses U00B5 for -@code{\mathmicro}, not for @code{\mu}, though! @xref{Wishlist LaTeX}. - -It is assumed that you do not redefine standard @TeX{} macros like -@code{\ne} (@pxref{TeX Macro Conversion}), if you do so, you should -better use unique decoding (@pxref{Unique Decoding}). - -The encoding of characters to @TeX{} macros works as follows: - -@itemize @bullet -@item -If the character is preceded by an odd number of backslashes, insert a -space before the character. - -@item -Accented characters are encoded without braces, e.g., we encode @samp{@,{c}} -to @samp{\c@ c}. Accents are encoded with braces, e.g., we use -@samp{\c@{@ @}} and @samp{\u@{@}}. -@end itemize - -Additionally, the encoding of characters to @TeX{} macros which are -@dfn{control words} (all-letter macros), or whose @TeX{} representation -ends with a control word (like @samp{\'\i}) works as follows: - -@itemize @bullet -@item -If the character is followed by a letter, replace the character by the -macro and insert a space. - -@item -If the macro is a text-mode macro and followed by one or more blanks, -replace the character and insert @samp{@{@}}. - -@item -Otherwise, just replace the character. -@end itemize - -The decoding of @TeX{} macros which are control words to characters -works as follows: - -@itemize @bullet -@item -If the macro is a text-mode macro and followed by @samp{@{@}} which is -followed by a blank, replace the macro and delete the braces. - -@item -If the macro is a text-mode macro and followed by one are more blanks, -we have the following rule: - -@itemize @minus -@item -If we have exactly one blank, the blank is a space, and it is not -followed by a @samp{%} (comment character), replace the macro by the -corresponding character and delete the space. (The character following -the space must be a letter with unique decoding, @ref{Unique Decoding}.) - -@item -Otherwise, do @emph{not decode} the macro! -@end itemize - -@item -Otherwise, just replace the macro. -@end itemize - -To clarify, @dfn{letter} means @samp{A}-@samp{Z}, @samp{a}-@samp{z}, or -@samp{@@}, @dfn{blank} means a space, newline or the end of the buffer -(therefore, the last character in the buffer is always followed by a -blank). - -There are three control words which are both text-mode and math mode -macros: @code{\ldots}, @code{\vdots}, and (by accident) @code{\angle}. -They are all treated like math-mode characters, but their minibuffer -info (@pxref{Info}) includes @samp{gobbles space} (spaces in the buffer -after the character have no impact on the document), - -Additionally, the following commands and environments are processed -during decoding (but we are just looking for strings, i.e., they are -also processed in comments): - -@vtable @code -@item x-symbol-tex-verb-delimiter-regexp -If the command @code{\verb} is found, its argument is not decoded if it -is delimited by one of the following characters: @samp{-}, @samp{!}, -@samp{#}, @samp{$}, @samp{&}, @samp{*}, @samp{+}, @samp{/}, @samp{=}, -@samp{?}, @samp{^}, @samp{|}, or @samp{!}. - -@item x-symbol-tex-env-verbatim-regexp -The contents of the @code{verbatim} environment is not decoded. To -produce accented characters inside this environment, use the La@TeX{} -package @file{inputenc.sty}. - -@c Inside @code{\hyphenation}@{@dots{}@}, you can only use Latin characters. - -@c David Kastrup: Wrong. inputenc.sty converts things like @"a into \"a -@c anyway (take a look into your table of contents file, xxx.toc, for -@c example). Both @"a and \"a will not work in hyphenation patterns when you -@c are using a font encoding without such a character (like the default OT1 -@c encoding), both @"a and \"a will work if something like -@c \usepackage[T1]{fontenc} is active. This holds for LaTeX; plain TeX is -@c not as sophisticated as to replace \"a with a single character when in -@c T1 encodings. - -@item x-symbol-tex-env-tabbing-regexp -Inside a @code{tabbing} environment, the macro sequences starting with -@samp{\`}, @samp{\'}, @samp{\=} and @samp{\-} are not decoded. It is -probably better (with or without X-Symbol) to use the La@TeX{} package -@file{inputenc.sty} or to the @code{Tabbing} environment, to be found in -the @sc{ctan} archives. -@end vtable - -During encoding, these commands and environments are not respected, -since it does not make any sense to have X-Symbol's private characters -in the @TeX{} file. - -@ifinfo -Final note: in the info file, you will probably not see any 8bit -characters. -@end ifinfo - -You might want change the conversion between characters and tokens in -language @code{tex} by changing: - -@vtable @code -@item x-symbol-tex-user-table -You can define you own tokens for X-Symbol characters. E.g., if you -like to have the command @code{\sqrt} represented by a character -(shadowing the entry for @code{\surd}), add the following to your -@file{~/.emacs}: - -@lisp -(setq x-symbol-tex-user-table '((radical (math special) "\\sqrt"))) -@end lisp -@end vtable - - -@node TeX Macro Symbols, , TeX Macro Conversion, TeX Macro -@comment node-name, next, previous, up -@subsection Extra Symbols of Language ``@TeX{} Macro'' -@cindex Extra Symbols for @TeX{} -@cindex Defining @code{tex} -@cindex Initializing @code{tex} -@cindex @TeX{} Macro Installation -@cindex Installing @code{tex} -@pindex @file{latexsym.sty} -@pindex @file{amssymb.sty} -@pindex @file{stmaryrd.sty} -@pindex @file{fontenc.sty} -@pindex @file{inputenc.sty} - -This section describes what you should put into your private style file -or your document if you want to use extra symbols, i.e., characters -whose info in the echo area (@pxref{Info}) contains s.th. like -@samp{@var{package}.sty} or @samp{user}. If you do not use the -corresponding characters, you do not have to do anything, of course. - -The @TeX{} macros @code{\Box}, @code{\Diamond}, @code{\leadsto}, -@code{\Join}, @code{\lhd}, @code{\mho}, @code{\rhd}, @code{\sqsupset}, -@code{\sqsubset}, @code{\unlhd}, @code{\unrhd}, are defined in La@TeX{} -package @file{latexsym.sty}: - -@example -\usepackage@{latexsym@} -@end example - -Note that these macros are also defined @file{amssymb.sty}. Since the -first four macros are defined differently (better) in -@file{latexsym.sty}, it does make sense to load both La@TeX{} packages. - -The @TeX{} macros @code{\boldsymbol}, @code{\circledast}, -@code{\circledcirc}, @code{\circleddash}, @code{\digamma}, -@code{\gtrapprox}, @code{\gtrsim}, @code{\lessapprox}, @code{\lesssim}, -@code{\triangleq}, @code{\varkappa} are defined in AMS La@TeX{} package -@file{amssymb.sty}: - -@example -\usepackage@{amssymb@} -@end example - -The @TeX{} macros @code{\bigsqcap}, @code{\llbracket}, -@code{\rrbracket}, @code{\llparenthesis}, @code{\rrparenthesis} are -defined in the La@TeX{} package @file{stmaryrd.sty}: - -@example -\usepackage@{stmaryrd@} -@end example - -The @TeX{} macros @code{\guilsinglleft}, @code{\guilsinglright}, -@code{\dj}, @code{\NG}, @code{\ng}, @code{\DH}, @code{\DJ}, @code{\dh}, -@code{\dj}, @code{\TH}, @code{\th}, @code{\guillemotleft}, -@code{\guillemotright} and the ogonek characters are only defined if -you use T1 font encoding: - -@example -\usepackage[T1]@{fontenc@} -@end example - -The @TeX{} macro @code{\mathmicro} for U00B5 can be defined by -(@pxref{Wishlist LaTeX}): - -@example -\let\mathmicro\mu -@end example - -You should define the following in your La@TeX{} file (if you use the -corresponding characters), the first can only be used with T1 font encoding. - -@example -\DeclareTextSymbol@{\textbackslash@}@{T1@}@{92@} -\newcommand@{\nsubset@}@{\not\subset@} -\newcommand@{\textflorin@}@{\textit@{f@}@} -\newcommand@{\setB@}@{@{\mathord@{\mathbb B@}@}@} -\newcommand@{\setC@}@{@{\mathord@{\mathbb C@}@}@} -\newcommand@{\setN@}@{@{\mathord@{\mathbb N@}@}@} -\newcommand@{\setQ@}@{@{\mathord@{\mathbb Q@}@}@} -\newcommand@{\setR@}@{@{\mathord@{\mathbb R@}@}@} -\newcommand@{\setZ@}@{@{\mathord@{\mathbb Z@}@}@} -\newcommand@{\coloncolon@}@{\mathrel@{::@}@} -@c \newcommand@{\lsemantics@}@{\mathopen@{\lbrack\mkern-3mu\lbrack@}@} -@c \newcommand@{\rsemantics@}@{\mathclose@{\rbrack\mkern-3mu\rbrack@}@} -@c \newcommand@{\lcata@}@{\mathopen@{(\mkern-3mu\mid@}@} -@c \newcommand@{\rcata@}@{\mathclose@{\mid\mkern-3mu)@}@} -@end example - -The @TeX{} macros @code{\textordfeminine}, @code{\textordmasculine}, -@code{\textdegree}, @code{\textonequarter}, @code{\textonehalf}, -@code{\textthreequarters}, @code{\mathonesuperior}, -@code{\mathtwosuperior}, @code{\maththreesuperior}, -@code{\textcopyright} are only defined when using La@TeX{} package -@file{inputenc.sty}: - -@example -\usepackage[latin1]@{inputenc@} -@end example - -The @TeX{} macros @code{\textcent}, @code{\textcurrency}, -@code{\textyen}, @code{\textbrokenbar}, @code{\textmalteseH}, -@code{\textmalteseh} are defined as not available in La@TeX{} package -@file{inputenc.sty}. @xref{Wishlist LaTeX}. If you use this package -and want to define these commands, use @code{\renewcommand} (or -@code{\def}) after, e.g.: - -@example -\usepackage[latin1]@{inputenc@} -\usepackage@{wasysym@} %% defines \cent, \currency, \brokenvert -\usepackage@{amssymb@} %% defines \yen -\renewcommand@{\textcent@}@{\cent@} -\renewcommand@{\textcurrency@}@{\currency@} -\renewcommand@{\textyen@}@{\yen@} -\renewcommand@{\textbrokenbar@}@{brokenvert@} -@end example - -@c =========================================================================== - -@node SGML Entity, BibTeX Macro, TeX Macro, Supported Languages -@comment node-name, next, previous, up -@section Token Language ``@sc{sgml} entity'' (@code{sgml}) -@cindex HTML -@cindex SGML entity -@cindex Token Language @code{sgml} -@cindex Language @code{sgml} -@pindex Netscape - -For buffers using the major mode @code{html-mode}, @code{hm--html-mode}, -@code{html-helper-mode}, @code{sgml-mode} or @code{xml-mode}, we use -token language @dfn{@sc{sgml} entity} (@code{sgml}). This language -provides the display of super-/subscripts and images. If the buffer -visits a file and uses a @sc{html} mode, X-Symbol mode is automatically -turned on. - -@menu -* SGML Entity Basics:: Basics of Language ``@sc{sgml} entity''. -* SGML Entity Features:: Super-/Subscripts and Images in @sc{html}. -* SGML Entity Conversion:: How the conversion of @sc{sgml} entities works. -@end menu - - -@node SGML Entity Basics, SGML Entity Features, SGML Entity, SGML Entity -@comment node-name, next, previous, up -@subsection Basics of Language ``@sc{sgml} entity'' -@cindex SGML Entity Basics -@cindex Basics SGML Entity -@cindex Choosing SGML Entity -@cindex SGML Entity Use -@cindex SGML Entity Modes - -The standard behavior can be controlled by the following variables: - -@vtable @code -@item x-symbol-sgml-modes -@itemx x-symbol-sgml-auto-style -The variables known from @ref{Minor Mode}. If the buffer uses a -@sc{html} mode, super-/subscripts and images are displayed, otherwise -unique decoding (@pxref{Unique Decoding}) will be used. - -@item x-symbol-sgml-auto-coding-alist -Used there to automatically deduce the specific encoding of the file -(@pxref{File Coding}). It searches for the following string in the -current buffer, including the comment: - -@example -<meta http-equiv="content-type" - content="text/html; charset=@var{encoding}"> -@end example - -where @var{encoding} should be one of @samp{iso-8859-1}, -@samp{iso-8859-2}, @samp{iso-8859-3}, @samp{iso-8859-9}, or -@samp{iso-8859-15}. 8bit characters are not encoded if the file if the -search was successful (@pxref{Controlling 8bit Coding}). -@end vtable - -The input methods and the character info in the echo area are controlled -by: - -@vtable @code -@item x-symbol-sgml-header-groups-alist -Defines the headers and their characters for the language specific Grid -and Menu. - -@item x-symbol-sgml-extra-menu-items -There are no special entries in the X-Symbol menu. - -@item x-symbol-sgml-electric-ignore -There is no additional constraint to the ones mentioned in @ref{Input -Method Electric}. - -@item x-symbol-sgml-class-alist -@itemx x-symbol-sgml-class-face-alist -Token classes (@pxref{Char Group}) are only used to define a coloring -scheme. X-Symbol uses dark orange or dark red for non-Latin-1 -characters in the Grid (@pxref{Input Method Grid} and the character info -(@pxref{Info}), dark red for characters without defined entity names in -@sc{html} (@pxref{SGML Entity Conversion}). -@end vtable - - -@node SGML Entity Features, SGML Entity Conversion, SGML Entity Basics, SGML Entity -@comment node-name, next, previous, up -@subsection Super-/Subscripts and Images in @sc{html} -@cindex SGML Entity Features -@cindex Features SGML Entity -@cindex SGML Entity Superscripts -@cindex SGML Entity Subscripts -@cindex SGML Entity Images - -The display of super- and subscripts (@pxref{Super and Subscripts}) is -controlled by: - -@vtable @code -@item x-symbol-sgml-font-lock-regexp -@itemx x-symbol-sgml-font-lock-limit-regexp -@itemx x-symbol-sgml-font-lock-alist -@itemx x-symbol-sgml-font-lock-contents-regexp -The superscript command @code{<sup>}@dots{}@code{</sup>} and the subscript -command @code{<sub>}@dots{}@code{</sub>} is recognized. The contents should -contain at least one character which is not a space or a -@code{nobreakspace}. -@end vtable - -The display of images (@pxref{Images}) is controlled by: - -@vtable @code -@item x-symbol-sgml-image-keywords -The following commands are recognized. Extension @var{ext} stands for -@file{gif}, @file{png}, @file{jpeg} or @file{jpg}. - -@example -<img @var{@dots{}} src="@var{file}.@var{ext}" @var{@dots{}}> -@end example - -@item x-symbol-sgml-master-directory -@itemx x-symbol-sgml-image-searchpath -Relative file names (@pxref{Image Display}) are relative to the -directory of the current file. - -@item x-symbol-sgml-image-file-truename-alist -The file name prefix @file{file:} is ignored. For any other file name -which starts with letters and then a colon, e.g., with @file{http:} or -@file{C:\} (which is no @sc{url} anyway), the image insertion command -will be skipped. By changing this variable, you could specify that the -prefix @file{http://www.fmi.uni-passau.de/~wedler/} corresponds to -@file{~/public_html/}. - -@item x-symbol-sgml-image-cached-dirs -The file name in the image command should not have a directory part or -the directory part should be @file{images/} or @file{pictures/} if the -image should be cached in the memory cache. -@end vtable - - -@node SGML Entity Conversion, , SGML Entity Features, SGML Entity -@comment node-name, next, previous, up -@subsection The Conversion of @sc{sgml} Entities -@cindex SGML Entity Conversion -@cindex Conversion of SGML Entities - -Most character entities of HTML-4.0 are supported, except the following: -uppercase Greek which look like uppercase Latin, ``markup-significant -and internationalization'' characters, and some quotes. See -@uref{http://www.w3.org/TR/REC-html40/sgml/entities.html}. - -By default, we encode to entity references like @code{&}, and decode -from both entity references and character references like @code{&}. -For Latin-N characters without defined entity names in @sc{html} (e.g. -@code{scedilla}), we can only use character references. - -Do not expect Netscape before v6 to display non-Latin-1 characters -correctly (this might work by specifying the charset UTF-8 and using -character references). - -You might want change the conversion between characters and tokens in -language @code{sgml} by changing: - -@vtable @code -@item x-symbol-sgml-token-list -@findex x-symbol-sgml-token-list-name -@findex x-symbol-sgml-token-list-code -@findex x-symbol-sgml-token-list-netscape -A symbol, which defines whether to use entity references, character -references, or entity references for Latin-1 characters and character -references for others. - -@item x-symbol-sgml-user-table -It is probably not a good idea to change the defined tokens (except via -the variable above), but you might want to add some definitions: - -@example -(setq x-symbol-sgml-user-table '((circ () 999 "&bcomp;"))) -@end example -@end vtable - -@c ==================================================================== - -@node BibTeX Macro, TeXinfo Command, SGML Entity, Supported Languages -@comment node-name, next, previous, up -@section Token Language ``Bib@TeX{} macro'' (@code{bib}) -@cindex Token Language @code{bib} -@cindex Language @code{bib} -@cindex Bib@TeX{} macro -@cindex @code{bib} -@cindex Bib@TeX{} - -For buffers using the major mode @code{bibtex-mode}, we use token -language @dfn{Bib@TeX{} macro} (@code{bib}). This language does not -provide the display of super-/subscripts and images. If the buffer -visits a file, X-Symbol mode is automatically turned on. It is -controlled by: - -@vtable @code -@item x-symbol-bib-modes -@itemx x-symbol-bib-auto-style -The variables known from @ref{Minor Mode}. There is no automatic -deduction of the file encoding, 8bit characters are usually encoded, and -there is usually no unique decoding. @xref{Conversion}. -@end vtable - -@pindex bibtex -The major difference between this language and the token language -@code{tex} is that the tokens for text-mode characters are most likely -enclosed by braces. This has some problems (@pxref{TeX Macro -Problems}), but is required by the program @code{bibtex}. - -The input methods and most features except super-/subscripts and images -work like in token language @code{tex} (@pxref{TeX Macro}): - -@vtable @code -@item x-symbol-bib-header-groups-alist -@itemx x-symbol-bib-electric-ignore -@itemx x-symbol-bib-class-alist -@itemx x-symbol-bib-class-face-alist -Like in @ref{TeX Macro Features}. - -@item x-symbol-bib-extra-menu-items -There are no special entries in the X-Symbol menu. -@end vtable - -You might want change the conversion between characters and tokens in -language @code{bib} by changing: - -@vtable @code -@item x-symbol-bib-user-table -@itemx x-symbol-tex-user-table -Use the former for @code{bib}-only changes, the latter also influences -the conversion with token language @code{tex}. -@end vtable - -@c ==================================================================== - -@node TeXinfo Command, External Languages, BibTeX Macro, Supported Languages -@comment node-name, next, previous, up -@section Token Language ``@TeX{}info command'' (@code{texi}) -@cindex Token Language @code{texi} -@cindex Language @code{texi} -@cindex @TeX{}info command -@cindex @code{texi} -@pindex texinfo -@pindex GNU texinfo - -For buffers using the major mode @code{texinfo-mode}, we use token -language @dfn{@TeX{}info command} (@code{texi}). This language does not -provide the display of super-/subscripts and images. If the buffer -visits a file, X-Symbol mode is automatically turned on. It is -controlled by: - -@vtable @code -@item x-symbol-texi-modes -@itemx x-symbol-texi-auto-style -The variables known from @ref{Minor Mode}. There is no automatic -deduction of the file encoding, 8bit characters are usually encoded, and -there is usually no unique decoding. @xref{Conversion}. -@end vtable - -With @code{x-symbol-8bits} having value @code{nil} (the default), it -might still happen that the saved file contains 8bit characters, since -token language @code{texi} does not define tokens for all characters in -the Latin charsets supported by X-Symbol. @xref{Controlling 8bit -Coding}. - -With @code{x-symbol-unique} having value @code{nil} (the default), we -have unique decoding anyway, since token language @code{texi} does only -define one token per character, i.e., the value is not important if -@code{x-symbol-8bits} is @code{nil}. @xref{Unique Decoding}. - -The input methods and the character info in the echo area are controlled -by: - -@vtable @code -@item x-symbol-texi-header-groups-alist -Defines the headers and their characters for the language specific Grid -and Menu. - -@item x-symbol-texi-extra-menu-items -There are no special entries in the X-Symbol menu. - -@item x-symbol-texi-electric-ignore -There is no additional constraint to the ones mentioned in @ref{Input -Method Electric}. - -@item x-symbol-texi-class-alist -@itemx x-symbol-texi-class-face-alist -Only a few token classes (@pxref{Char Group}) are defined, the most -interesting induces the character info (@pxref{Info}) to display -@samp{not as code} for @code{@@minus@{@}} (@code{@@minus@{@}} should not -used inside @code{@@code} and @code{@@example}). No coloring scheme is -defined. -@end vtable - -@pindex makeinfo -At least with @code{makeinfo-4.0}, you do not get accented characters in -the info file for the corresponding @TeX{}info commands in the -@file{.texi} file, the @sc{html} output might contain illegal -``@sc{sgml} entities'' like @code{&140;}. - -@pindex texi2html -At least with @code{texi2html-1.62}, you see accented characters in the -@sc{html} output for the corresponding @TeX{}info commands in the -@file{.texi} file, but the output might also contain illegal ``@sc{sgml} -entities'' like @code{&140;}. - -You might want change the conversion between characters and tokens in -language @code{texi} by changing: - -@vtable @code -@itemx x-symbol-texi-user-table -Extra entries for the conversion. -@end vtable - -@c ==================================================================== - -@node External Languages, , TeXinfo Command, Supported Languages -@comment node-name, next, previous, up -@section Languages Defined in Other Emacs Packages -@cindex Foreign Languages -@cindex External Languages -@cindex Other Languages - -It is no problem for other Emacs packages to define their own token -language (@pxref{Extending X-Symbol}). - -I know of the following package---please check its manual for details. - -@itemize @bullet -@item -@pindex ProofGeneral -@cindex Isabelle Symbol -Package @uref{http://www.proofgeneral.org/,ProofGeneral} defines token -language ``Isabelle symbol''. -@end itemize - -@c =========================================================================== - -@node X-Symbol Internals, Problems, Supported Languages, Top -@comment node-name, next, previous, up -@chapter X-Symbol Internals -@cindex Internals, X-Symbol -@cindex X-Symbol Internals - -This section is outdated, it currently describes Version 3.4.2 of X-Symbol. - -Package X-Symbol is distributed in two ways. End-users should use the -@emph{binary package} which contains pre-compiled files. X-Symbol -developers should use the @emph{source package} which contains some -additional files. - -@menu -* Char Representation:: How X-Symbol represents X-Symbol chars. -* Defining Charsets:: How X-Symbol defines additional chars. -* Defining Input Methods:: How X-Symbol defines the input methods. -* Extending X-Symbol:: How to add fonts and token languages. -* Various Internals:: How X-Symbol handles other aspects. -* Design Alternatives:: Why X-Symbol is not designed differently. -* Language Internals:: How X-Symbol handles languages. -* Misc Internals:: Various. TODO. -@end menu - -@c ==================================================================== - -@node Char Representation, Defining Charsets, X-Symbol Internals, X-Symbol Internals -@comment node-name, next, previous, up -@section Internal Representation of X-Symbol Characters -@cindex Charsym -@cindex Leading Character -@cindex Octet -@cindex Cstring -@cindex Mule Character - -As mentioned in @ref{Pseudo Language}, most functions do not operate -on X-Symbol characters directly, they use ``x-symbol charsyms''. These -charsyms have a symbol property @code{x-symbol-cstring} which points to -a string, called @dfn{cstring}, containing the X-Symbol character. - -@itemize @bullet -@item -Under Emacs and XEmacs/Mule, the string only contains the character -which is a normal Mule character created by @code{make-char}. - -@item -@pindex font-lock -Under XEmacs/no-Mule, the string only contains the 8bit character if the -X-Symbol character is a 8bit character according to -@code{x-symbol-default-coding} (@pxref{Default Coding}). Otherwise, the -string contains of a @dfn{leading character} (with range @samp{\200} to -@samp{\237}) and an @dfn{octet}. Package @code{font-lock} is used to -display them correctly as X-Symbol characters (@pxref{FAQ Strange -Chars}). E.g., with @samp{\251} is @code{copyright}, we get - -@lisp -(get 'Idotaccent 'x-symbol-cstring) - @result{} "\235\251" -@end lisp -@end itemize - -If the character is also a 8bit character in some encoding (@pxref{File -Coding}), the charsym also has the symbol property -@code{x-symbol-file-cstrings} for the representation in the file and -property @code{x-symbol-buffer-cstrings} to recognize character aliases -(@pxref{Char Aliases}). E.g., under XEmacs/no-Mule, with @samp{\335} is -@code{Yacute}, @samp{\251} is @code{copyright}, we get - -@lisp -(get 'Idotaccent 'x-symbol-file-cstrings) - @result{} (iso-8859-9 "\335" iso-8859-3 "\251") -(get 'Idotaccent 'x-symbol-buffer-cstrings) - @result{} (iso-8859-9 "\234\335" iso-8859-3 "\235\251") -@end lisp - -The values are plists (@pxref{Property Lists,,,lispref,XEmacs Lisp -Reference Manual}) mapping the file coding to the strings in the file or -the buffer, respectively. - -After token languages have been initialized, the charsym also has the -symbol properties @code{x-symbol-tokens} (@pxref{Token Language}) and -@code{x-symbol-classes} (@pxref{Char Group}): - -@lisp -(get 'Idotaccent 'x-symbol-tokens) - @result{} (sgml "İ" tex "@{\\.I@}") -(get 'Idotaccent 'x-symbol-classes) - @result{} (sgml (non-l1) tex (text aletter)) -@end lisp - -@c ==================================================================== - -@node Defining Charsets, Defining Input Methods, Char Representation, X-Symbol Internals -@comment node-name, next, previous, up -@section Defining X-Symbol Charsets -@cindex Cset -@cindex Charset -@cindex Final Byte - -An X-Symbol charset, called @dfn{cset} in the code and the docstrings, -handles one font used by package X-Symbol. Each cset must use the -same char registry@minus{}encoding as the corresponding variables for -the fonts (@pxref{Installing Fonts Lisp}). - -You have to tell X-Symbol, how to define Mule charsets with Emacs or -XEmacs/Mule and which leading character to use with XEmacs/no-Mule. As -an example, we use the definition of the Adobe symbol font. - -@lisp -@group -(defvar x-symbol-xsymb0-cset - '((("adobe-fontspecific") ?\233 -3600) - (xsymb0-left "X-Symbol characters 0, left" 94 ?:) . - (xsymb0-right "X-Symbol characters 0, right" 94 ?\;))) -@end group -@end lisp - -Mule charsets (@pxref{Charsets,,,lispref,XEmacs Lisp Reference Manual}) -may be used for 94 or 96 characters (this example: 94, only charset with -dimension 1 can be defined with X-Symbol). Thus, if your font provides -more characters, you are likely to use both the left and the right half -of the font to define two Mule charsets. For both of them, you have to -define a unique, free final character/byte of the standard ISO 2022 -escape sequence designating the charset (this example: @samp{:} and -@samp{;}). The remaining free (reserved by Emacs for users) are -@samp{>} and @samp{?}, the latter is already used in XEmacs. - -For XEmacs/no-Mule, you have to define the leading character (this -example: @samp{\233}). - -@vtable @code -@item x-symbol-latin1-cset -@itemx x-symbol-latin2-cset -@itemx x-symbol-latin3-cset -@itemx x-symbol-latin5-cset -Cset definitions only using the upper halves of the fonts where the -corresponding Mule charsets are known and which define characters which -are considered 8bit characters in the corresponding encoding, see -@ref{File Coding}. - -@item x-symbol-xsymb0-cset -@itemx x-symbol-xsymb1-cset -Cset definitions using both halves of the fonts where no corresponding -Mule charset are yet known. -@end vtable - -@c ==================================================================== - -@node Defining Input Methods, Extending X-Symbol, Defining Charsets, X-Symbol Internals -@comment node-name, next, previous, up -@section Defining Input Methods -@cindex Input Method Internals -@cindex Internals, Input Method -@cindex Defining Input Methods - -This is probably the hardest section in this manual@dots{}. - -@menu -* Input Method Objectives:: Input methods should be intuitive/consistent. -* Intro Char Descriptions:: An example introducing char descriptions. -* Char Descriptions:: The aspects and the contexts of a character. -* Example Char Descriptions:: A complete example defining input methods. -* Customizing Input Methods:: How to customize the input methods. -@end menu - - -@node Input Method Objectives, Intro Char Descriptions, Defining Input Methods, Defining Input Methods -@comment node-name, next, previous, up -@subsection Defining Input Methods: Objectives -@cindex Input Method Objectives -@cindex Objectives, Input Methods -@cindex Consistent Input Methods - -Input methods should be intuitive. This requires consistency: - -@itemize @bullet -@item -Characters should be found under the same header in the Grid and in the -Menu. - -@item -If one character can be modified or rotated to another character -(@pxref{Input Method Context}), both should stand near to each other in -the Grid. E.g., since @code{arrowsouthwest} rotates to -@code{arrowdown}, they stand next to each other. - -@item -The key binding should be similar to the context of input method -Context. If two characters are defined to have the same context, they -should have the same key prefix and the suffix should be a number which -increases with the ``modify-to'' behavior. E.g., @code{reflexsubset} -with key binding @kbd{C-= < _ 2} modifies to @code{reflexsqsubset} with -key binding @kbd{C-= < _ 3}. - -@item -Consistent definition of ``modify-to'' and ``rotate-to'': if A can be -modified to B and rotated to C and C can be modified to D, B can be -rotated to D in most cases. - -@item -It should be possible to load character definitions later on, e.g., when -new token languages get initialized. - -@itemize @minus -@item -Existing key bindings should not be overwritten. If some of them have to -change, it should be done in a uniform way (solution: key suffix -@samp{1}). - -@item -Also, modifying or rotating a new character to/from old ones should be -possible without changing the input definitions of the old characters. -@end itemize -@end itemize - -Observation: It is impossible, especially with the possibility to load -character definitions later on, to define the input methods directly, -i.e., by something like @code{define-key}. The solution is an indirect -definitions with ``character descriptions''. - - -@node Intro Char Descriptions, Char Descriptions, Input Method Objectives, Defining Input Methods -@comment node-name, next, previous, up -@subsection X-Symbol Character Descriptions: Example -@cindex Character Descriptions, Intro -@cindex Character Descriptions, Example - -As an example for ``character descriptions'', look at the definition of -@code{longarrowright} in @code{x-symbol-xsymb1-table} (@samp{95} is the -encoding in the font and not of interest here). Some terms are defined -in the next section: - -@lisp -@group -(longarrowright 95 - (arrow) (size big . arrowright) nil ("->" t "-->") (emdash)) -@end group -@end lisp - -With this definition, package X-Symbol automatically defines: - -@itemize @bullet -@item -Key bindings @kbd{C-= - - >} and @kbd{C-= - > 2}, the latter has suffix -2, because @kbd{C-= - >} is also ``wanted'' by @code{arrowright} which -now has the key binding @kbd{C-= - > 1} (the ``score'' of -@code{longarrowright} is higher, due to @samp{size big}). @xref{Input -Method Keyboard}. - -@item -@code{arrowright} modifies to @code{longarrowright}, which modifies to -@code{arrowright}. @xref{Input Method Context}. - -@item -@code{longarrowleft} rotates to @code{longarrowright}, which rotates to -@code{longarrowboth} (which rotates to @code{longarrowleft}). (The -``rotate aspects'' are inherited from @code{arrowright}.) @xref{Input -Method Context}. - -@item -The following contexts can be modified to @code{longarrowright}: -@samp{-->} or @code{minus1} / @code{endash} / @code{macron} / -@code{emdash} / @code{hyphen} and @samp{->} (since all define context -@samp{-}) and @code{emdash} and @samp{>} (since @code{emdash} defines -context @samp{--}). @samp{->} is used for @code{arrowright}, which has -a lower score, see above. @xref{Input Method Context}. - -@item -Input method Electric will change context @samp{-->} (is tagged with -@code{t} in the definition) to @code{longarrowright}, also @code{emdash} -and @samp{>} (only theoretically, since input method Electric will -produce @code{emdash} only in @TeX{}'s text mode, and -@code{longarrowright} only in @TeX{}'s math mode). @xref{Input Method -Electric}. - -@item -The character will appear in the Grid under the header @samp{Arrow}. -You will probably recognize that the placement is based on the modify-to -and rotate-to behavior above. @xref{Input Method Grid}. - -@item -The character will appear in the Menu under one of the headers -@samp{Arrow @var{n}}". The submenus are sorted alphabetically. -@xref{Input Method Menu}. -@end itemize - -Consider that this character would be missing in package X-Symbol and -you want to define your own character (in your own font). With the -current scheme, the one line above is enough! Have fun defining all the -consequences directly instead@dots{}. - - -@node Char Descriptions, Example Char Descriptions, Intro Char Descriptions, Defining Input Methods -@comment node-name, next, previous, up -@subsection Defining Input Methods by Character Descriptions -@cindex Character Descriptions -@cindex Aspects of Characters -@cindex Parent Character -@cindex Component of Characters -@cindex Modify Scores -@cindex Rotate Scores -@cindex Modify Aspects -@cindex Rotate Aspects -@cindex Score of a Character -@cindex Modify Chain -@cindex Exclusive Modify Chain -@cindex Rotate Chain -@cindex Horizontal Chain -@cindex Key Chain - -Characters are defined with @dfn{character descriptions} which consist -of different @dfn{aspects} and @dfn{contexts}, which can also be -inherited from a @dfn{parent} character. All characters which are -connected with parents, form a @dfn{component}. Aspects and contexts -are used to determine the modify-to and rotate-to chain for characters, -the contexts for input method Context and Electric, the key bindings, -and the position in the Menu and the Grid. - -If you want to check the component, scores, etc of a specific character, -look at the symbol property (e.g., with @kbd{M-x hyper-apropos-get-doc}) -of the corresponding charsym, e.g., @code{arrowright}. See also the -docstrings of @code{x-symbol-init-cset} and @code{x-symbol-init-input}. - -Remember, all characters which are connected with parents, form a -component. @dfn{Contexts} are the contexts of input method Context -(@pxref{Input Method Context}). If a table entry of a charsym does not -define its own contexts, they are the same as the contexts of the -charsym in an earlier position in the modify chain (see below), or the -contexts of the first charsym with defined contexts in the modify chain. -The @dfn{modify context} of a charsym is the first context. - -@vtable @code -@item x-symbol-rotate-aspects-alist -Characters in the same component whose aspects only differ by their -@code{direction} (@code{east},@dots{}), a key in this alist, are -circularly connected by ``rotate-to''. The sequence in the @dfn{rotate -chain} is determined by @dfn{rotate scores} depending on the values in -the @dfn{rotate aspects}. Charsyms with the same ``rotate-aspects'' are -not connected (charsyms with the smallest modify scores are preferred). - -@lisp -(get 'longarrowright 'x-symbol-rotate-aspects) - @result{} (-1500 direction east) -@end lisp - -@item x-symbol-modify-aspects-alist -Characters in the same components whose aspects only differ by their -@code{size} (@code{big},@dots{}), @code{shape} (@code{round}, -@code{square}@dots{}) and/or @code{shift} (@code{up}, -@code{down},@dots{}), keys in this alist, are circularly connected by -``modify-to'', if all their modify contexts are used exclusively, i.e., -no other modify chain uses any of them. The sequence in the @dfn{modify -chain} is determined by @dfn{modify scores} depending on the values in -the @dfn{modify aspects}, the charsym score defined in the definition -tables and the score of the whole cset (@pxref{Defining Charsets}). - -@lisp -(get 'longarrowright 'x-symbol-score) - @result{} -3500 -(get 'longarrowright 'x-symbol-modify-aspects) - @result{} (1500 shift nil shape nil size big) -@end lisp - -Otherwise, the ``modify chain'' is divided into modify subchains, which -are those charsyms sharing the same modify context. All modify -subchains using the same modify context, build a @dfn{horizontal chain} -whose charsyms are circularly connected by ``modify-to''. - -We build a @dfn{key chain} for all contexts (not just modify contexts), -consisting of all charsyms (sorted according to modify scores) having -the context. Input method Context modifies the context to the first -charsym in the key chain. - -@item x-symbol-key-suffix-string -If there is only one charsym in the key chain, @kbd{C-=} plus the -context inserts the charsym. Otherwise, we determine a suffix for each -charsym in the key chain by its index and this string. @kbd{C-=} plus -the context plus the suffix inserts the charsym. -@end vtable - - -@node Example Char Descriptions, Customizing Input Methods, Char Descriptions, Defining Input Methods -@comment node-name, next, previous, up -@subsection Defining Input Methods: Example -@cindex Character Descriptions, Example - -@smallexample -An example: Modify Modify Rotate Rotate Modify Other - Score Aspect Score Aspect Context Contexts --------------------------------------------------------------- -charsym 1w 150 nil 100 west `a' `c' -charsym 2w 200 nil 100 west `b' - -charsym 3w 350 big 100 west (`b') (-) -charsym 1e 100 nil 200 east (`a') (`b') -charsym 2e 250 big 200 east `a' `b' -charsym 3e 300 big 200 east `a' - -charsym 1n 100 nil 300 north `d' `c' -charsym 2n 200 big 300 north `c' - -@end smallexample - -Assuming that all charsyms form one component, we have: - -@smallexample -Rotate chains: (1w,2w)-1e-1n @r{and} 3w-(2e,3e)-2n. -Modify chains: 1w-2w-3w @r{and} 1e-2w-3w and 1n-2n. -Horizontal chains: 1e-1w-2e-3e @r{(for modify context @samp{a})} - 2w-3w @r{(for modify context @samp{b})} -Key chains: 1e-1w-2e-3e @r{(for context @samp{a})} - 1e-2w-2e-3w @r{(for context @samp{b})} - 1n-1w-2n @r{(for context @samp{c})} - 1n @r{(for context @samp{d})} -@end smallexample - -That makes the following bindings: - -@smallexample -Rotate-to: 1w->1e, 2w->1e, 1e->1n, 1n->1w - 3w->2e, 2e->2n, 3e->2n, 2n->3w -Modify-to: 1e->1w, 1w->2e, 2e->3e, 3e->1e @r{(horizontal chain)} - 2w->3w, 3w->2w @r{(horizontal chain)} - 1n->2n, 2n->1n @r{(modify chain with exclusive modify contexts)} -CONTEXTS: `a'->1e, `b'->1e, `c'->1n, `d'->1n -KEY: `a1'=1e, `a2'=1w, `a3'=2e, `a4'=3e, `b1'=1e, ..., `d'=1n -@end smallexample - - -@node Customizing Input Methods, , Example Char Descriptions, Defining Input Methods -@comment node-name, next, previous, up -@subsection Customizing Input Methods -@cindex Customizing Input Methods -@cindex Input Methods Customization - -When defining contexts for characters, you should try to use default -contexts to make them and key bindings as consistent as possible. E.g., -package X-Symbol only defines explicit contexts for 186 of the 437 -characters. - -@vtable @code -@item x-symbol-group-input-alist -Defines default scores and bindings for characters of a group -(@pxref{Char Group}). E.g., the definition (in -@code{x-symbol-latin1-table}) - -@lisp -(aacute 225 (acute "a" Aacute)) -@end lisp - -defines @code{aacute} without any explicit contexts, but having the -group @code{acute} and the subgroup @samp{a}. The default input for the -group is defined by the following element in this variable: - -@lisp -(acute 0 "%s'" t "'%s") -@end lisp - -That means: 0 is added to the normal ``modify-score'' of the character. -@samp{%s'} and @samp{'%s} with @samp{%s} substituted by the subgroup, -i.e., @samp{a'} and @samp{'a}, are the contexts for @code{aacute}. The -context @samp{'a} is also used for input method Electric since it is -prefixed by @code{t}. - -@item x-symbol-key-min-length -It is quite unlikely that a one-character context is not the prefix of -another context, at least when loading additional font definitions. In -order not to have to change key bindings @kbd{C-= @var{key}} to @kbd{C-= -@var{key} 1}, it is required that the length of the key binding without -@kbd{C-=} is at least 2. -@end vtable - -@c ==================================================================== - -@node Extending X-Symbol, Various Internals, Defining Input Methods, X-Symbol Internals -@comment node-name, next, previous, up -@section Extending Package X-Symbol -@cindex Extending X-Symbol - -In this section, you are told what to consider and what to do when -extending package X-Symbol with new characters and new token languages. -If you only want to define a token language using existing characters, -you only have to read the last section. - -@menu -* Extending with Fonts:: How to add fonts to X-Symbol. -* Input Definitions:: Guidelines for input definitions. -* Font Definition File:: How to define new character in a file. -* Language Extension File:: Extending an existing language. -* Language Definition File:: Defining a new language. -@end menu - - -@node Extending with Fonts, Input Definitions, Extending X-Symbol, Extending X-Symbol -@comment node-name, next, previous, up -@subsection Extending X-Symbol with New Fonts -@cindex Extending with Fonts -@cindex Adding Fonts -@cindex Font Extension -@cindex Guidelines, Font Extension - -If you add a new token language to package X-Symbol which should -represent tokens by characters which are not yet defined by package -X-Symbol, you have to add a new font to package X-Symbol, first. - -When adding new fonts to package X-Symbol, consider that X-Symbol has to -run under Emacs, XEmacs/Mule and XEmacs/no-Mule. - -Running under Emacs and XEmacs/Mule requires that you cannot use all -encodings in a font for characters: you should probably only use -encodings 33 to 126 and 160 to 255. You should also use a unique pair -of charset properties @samp{CHARSET_REGISTRY} and -@samp{CHARSET_ENCODING}. - -Running under XEmacs/no-Mule can leads to problems when major modes do -not check whether the previous character is an escape character (in our -case, a leading character, @pxref{Char Representation}) when looking at a -character. Thus, you should probably not use encodings which represent -characters in your default font with a special syntax. - -@itemize @bullet -@item -In La@TeX{} buffers, characters in @samp{$%\@{@}} have a special -syntax. Thus, you should you should probably not use encodings 36, 37, -92, 123 and 125 for characters which could also be useful with token -languages @code{tex} and @code{utex}. - -@item -In HTML buffers, characters in @samp{&<>} have a special syntax. Thus, -you should you should probably not use encodings 38, 60 and 62 for -characters which could also be useful with token language @code{sgml}. -@end itemize - -You have to tell package X-Symbol which fonts to use for the normal -text, subscripts and superscripts. @xref{Installing Fonts Lisp}. - -You have to tell X-Symbol, how to define Mule charsets with Emacs and -XEmacs/Mule and which leading character to use with XEmacs/no-Mule. -@xref{Defining Charsets}. - - -@node Input Definitions, Font Definition File, Extending with Fonts, Extending X-Symbol -@comment node-name, next, previous, up -@subsection Guidelines for Input Definitions -@cindex Input Definitions, Guidelines -@cindex Guidelines, Input Definitions - -Read section @ref{Defining Input Methods}. Look at the tables in -@file{x-symbol.el}. Here are some guidelines of how to define the input -methods for new characters: - -@enumerate -@item -Define reasonable character groups for new characters, see @ref{Char -Group}. E.g., if you add the IPA font for phonetic characters, you -are likely to define at least one additional charset group. If you do -not know whether to use one or two groups for a set of characters, use -two. - -@item -Define under which Grid/Menu header the character of the new character -group should appear. You may also want to add additional headers for -these characters. @xref{Char Group}. - -@item -If reasonable, define default contexts for characters of a group, see -@ref{Customizing Input Methods}. - -@item -For the other characters, define contexts by Ascii sequences which look -similar to the character. - -@item -Form a component for a set of characters which are strongly related to -each other. In most cases, characters of a component are in the same -group but not vice versa. E.g., the simple arrows already defined by -package X-Symbol form one component. You form a component of characters -by specifying parents in their definition, see @ref{Char Descriptions}. - -@item -Use aspects to describe the new characters. Add new aspects to -@code{x-symbol-modify-aspects-alist} and -@code{x-symbol-rotate-aspects-alist} if necessary (@pxref{Char -Descriptions}). - -@item -Finish the definition of your font file (@pxref{Font Definition File}), -load it with @kbd{M-x load-file}, and initialize the input methods, -e.g., by invoking the grid (@kbd{M-x x-symbol-grid}). - -@item -If there are no errors, you are likely to get warnings about equal -modify scores. In this case, the sequence of characters in the -modify-to chain is random, so are the numerical suffixes of key bindings. - -@enumerate a -@item -Define a base score for the whole X-Symbol charset (``cset score'') -which should be a positive number in order not to change the key bindings -of previously defined X-Symbol characters. - -@item -Define reasonable scores for newly defined aspects and character groups. - -@item -Finally, fine-tune your definitions by charsym scores in the tables. -This should be necessary only for a few characters. -@end enumerate -@end enumerate - - -@node Font Definition File, Language Extension File, Input Definitions, Extending X-Symbol -@comment node-name, next, previous, up -@subsection Elisp File Defining a New Font -@cindex Font Definition File - -Now put all things together in a separate font definition file. You -should not put it in a language definition file. - -Here is a tiny example using only the lower half of the font: - -@lisp -(provide 'x-symbol-myfont) -@group -(defvar x-symbol-myfont-fonts - '(("-xsymb-myfont-medium-r-normal--14-140-75-75-p-85-xsymb-myfont") - ("-xsymb-myfont_sub-medium-r-normal--12-120-75-75-p-74-xsymb-myfont") - ("-xsymb-myfont_sup-medium-r-normal--12-120-75-75-p-74-xsymb-myfont"))) -@end group -@group -(defvar x-symbol-myfont-cset - '((("xsymb-myfont") ?\200 1000) - (myfont-left "My font characters, left" 94 63) . nil)) -@end group -@end lisp - -@lisp -@group -(defvar x-symbol-myfont-table - '((longarrownortheast 33 (arrow) (size big . arrownortheast)) - (koerper 34 (setsymbol "K")) - (circleS 35 (symbol "S") nil nil "SO"))) -@end group -@group -(x-symbol-init-cset x-symbol-myfont-cset x-symbol-myfont-fonts - x-symbol-myfont-table) -@end group -@end lisp - -Due to an XEmacs bug with char syntax @code{inherit}, you should also -add the following line to files @file{x-symbol-xmas20.el} and -@file{x-symbol-xmas21.el}: - -@lisp - (modify-syntax-entry ?\200 "\\" (standard-syntax-table)) -@end lisp - - -@node Language Extension File, Language Definition File, Font Definition File, Extending X-Symbol -@comment node-name, next, previous, up -@subsection Elisp File Extending a Token Language -@cindex Language Definition File - -If you want to use the new font to extend an existing token language, -define a new token language which inherits most variables from the -``parent language''. E.g., token language @code{utex} inherits most -variables from @code{tex}, see @file{x-symbol-utex.el}. - -A language must define variables for all language aspects, see -@ref{Language Internals}. Our example defines a language @code{mytex} -using the additional characters from @ref{Font Definition File}. - -First, you have to register the language in a startup file: - -@lisp -(defvar x-symbol-mytex-name "My TeX macro") -(defvar x-symbol-mytex-modes nil) -(x-symbol-register-language 'mytex 'x-symbol-mytex x-symbol-mytex-modes) -@end lisp - -The language definition file should look like (leaving out most parts -which are similar to the ones in @file{x-symbol-utex.el}): - -@lisp -(provide 'x-symbol-mytex) -(require 'x-symbol-tex) -(defvar x-symbol-mytex-required-fonts '(x-symbol-myfont)) -(put 'mytex 'x-symbol-font-lock-keywords 'x-symbol-tex-font-lock-keywords) -@end lisp - -@lisp -(defvar x-symbol-mytex-user-table nil) -@group -(defvar x-symbol-mytex-myfont-table - '((longarrownortheast (math arrow user) "\\longnortheastarrow") - (koerper (math letter user) "\\setK") - (circleS (math ordinary amssymb) "\\circledS"))) -@end group -@group -(defvar x-symbol-mytex-table - (append x-symbol-mytex-user-table - '(nil) - x-symbol-mytex-myfont-table - x-symbol-tex-table)) -@end group -@end lisp - -It is important that you do not define a variable for the language -access @code{x-symbol-font-lock-keywords}, but rather use the variable -of the parent language directly, see @ref{Language Internals}. - -During the testing phase, you should probably leave out the -@samp{'(nil)} which prevents warnings about redefinitions for the -following elements. - - -@node Language Definition File, , Language Extension File, Extending X-Symbol -@comment node-name, next, previous, up -@subsection Elisp File Defining a New Token Language -@cindex Language Definition File - -You might also want to define a new token language not based on another -language. - -As an example, consider a token language ``My Unicode'' (@code{myuc}) -for buffers with major mode @code{myuc-mode}. Thus, we register the -language by: - -@lisp -(defvar x-symbol-myuc-name "My Unicode") -(defvar x-symbol-myuc-modes '(myuc-mode)) -(x-symbol-register-language 'myuc 'x-symbol-myuc x-symbol-myuc-modes) -@end lisp - -Each token if language @code{myuc} consists of @samp{#} plus the -hexadecimal representation of the Unicode with hexadecimal values where -the case of digits is not important and the preferred case is upcase. A -single @samp{#} is represented by the token @code{##}. In order to be -more flexible, we want to define the tokens by their decimal value in -the table. There are no subscript and no images. The code below -(@file{x-symbol-myuc.el}) is included in the source distribution of -package X-Symbol. - -@lisp -(provide 'x-symbol-myuc) -(defvar x-symbol-myuc-required-fonts nil) -(defvar x-symbol-myuc-modeline-name "myuc") -@group -(defvar x-symbol-myuc-class-alist - '((VALID "My Unicode" (x-symbol-info-face)) - (INVALID "no My Unicode" (red x-symbol-info-face)))) -@end group -(defvar x-symbol-myuc-font-lock-keywords nil) -(defvar x-symbol-myuc-image-keywords nil) -@dots{} -@end lisp - -@lisp -(defvar x-symbol-myuc-case-insensitive 'upcase) -(defvar x-symbol-myuc-token-shape '(?# "#[0-9A-Fa-f]+\\'" . "[0-9A-Fa-f]")) -(defvar x-symbol-myuc-exec-specs '(nil (nil . "#[0-9A-Fa-f]+"))) -(defvar x-symbol-myuc-input-token-ignore nil) -@end lisp - -@lisp -@group -(defun x-symbol-myuc-default-token-list (tokens) - (list (format "#%X" (car tokens)))) -@end group -(defvar x-symbol-myuc-token-list 'x-symbol-myuc-default-token-list) -(defvar x-symbol-myuc-user-table nil) -@group -(defvar x-symbol-myuc-xsymb0-table - '((alpha () 945) (beta () 946))) -@end group -@group -(defvar x-symbol-myuc-table - (append x-symbol-myuc-user-table x-symbol-myuc-xsymb0-table)) -@end group -@dots{} -@end lisp - -@c ==================================================================== - -@node Various Internals, Design Alternatives, Extending X-Symbol, X-Symbol Internals -@comment node-name, next, previous, up -@section Various Internals - -@menu -* Tagging Insert Commands:: Don't break input methods Token and Electric. -* Avoiding Flickering:: Moving cursor in invisible commands. -@end menu - - -@node Tagging Insert Commands, Avoiding Flickering, Various Internals, Various Internals -@comment node-name, next, previous, up -@subsection Tagging Insert Commands for Token and Electric -@cindex Insert Commands, Tagging -@cindex Tagging Insert Commands -@cindex Recognizing Insert Commands - -Input methods Token (@pxref{Input Method Token}) and Electric -(@pxref{Input Method Electric}) stop their auto replacement if you use a -command which is not an insert command. - -@ftable @code -@item self-insert-command -@itemx newline -@itemx newline-and-indent -@itemx reindent-then-newline-and-indent -@itemx tex-insert-quote -@itemx TeX-insert-quote -@itemx TeX-insert-punctuation -@itemx TeX-insert-dollar -@itemx sgml-close-angle -@itemx sgml-slash -These commands and commands aliased to these are recognized as input -commands by having a non-@code{nil} value of its symbol property -@code{x-symbol-input}. -@end ftable - - -@node Avoiding Flickering, , Tagging Insert Commands, Various Internals -@comment node-name, next, previous, up -@subsection Avoiding Hide/Show-Invisible Flickering -@cindex Avoiding Flickering -@cindex Flickering, Invisible -@cindex Invisible Flickering - -Starting a command makes a previously revealed super- or subscript -command (@pxref{Super and Subscripts}) invisible again. Repeatedly -invoking commands which moves the point just by a small amount can lead -to some flickering. - -@ftable @code -@item forward-char -@itemx forward-char-command -@itemx backward-char -@itemx backward-char-command -If the point position after the execution of these commands is still -``at'' the super- or subscript command, the command won't be made -invisible at the first place. Each of these four commands have a -function (@code{1+} and @code{1-}) as the value of its symbol property -@code{x-symbol-point-function} which returns the position ``after'' when -called with the position ``before''. -@end ftable - -@c ==================================================================== - -@node Design Alternatives, Language Internals, Various Internals, X-Symbol Internals -@comment node-name, next, previous, up -@section Design Alternatives - -This section describes potential design alternatives and why they were -not used. - -@menu -* Alt Token Representations:: Why we need the conversion. -* Alt Global Mode:: How to turn on X-Symbol globally. -* Alt Auto Conversion:: When do we convert automatically. -@end menu - - -@node Alt Token Representations, Alt Global Mode, Design Alternatives, Design Alternatives -@comment node-name, next, previous, up -@subsection Alternative Token Representations -@cindex Alternative Token Representations -@cindex Token Representation, Alternatives - -Package X-Symbol represents tokens in the file by characters in the -buffer. This requires an automatic conversion when visiting a file or -saving a buffer, see @ref{Conversion}. - -Another possibility would be to use the tokens directly in the buffer -and just display them differently. You would need no conversion and you -could copy the text easily to a message buffer. This could be done by a -special face and an additional font-lock keyword for every token. The -disadvantages make this approach unfeasible: - -@itemize @bullet -@item -The editing commands would work on the tokens which are invisible for -the user. - -@item -Extremely resource and startup-time consuming. If as many characters -should be supported as done by package X-Symbol, including superscripts -and subscripts, more than 2000 faces with display tables would have to -be defined even without considering char aliases! - -@item -Time consuming. More than 2000 entries in you font-lock keywords would -slow down the fontification considerably, which would be too much even -when using @code{lazy-shot}! -@end itemize - -Another possibility would be to adapt @TeX{} to the representations of -the corresponding characters in Emacs' buffer. Again, you would need no -conversion. The disadvantages make this approach too restrictive: - -@itemize @bullet -@item -You cannot adopt @sc{sgml} to this approach. - -@item -You cannot read normal La@TeX{} files directly, you do not write normal -La@TeX{} files. - -@item -You would have different @TeX{} versions: one for X-Symbol with Emacs -and XEmacs/Mule, one with XEmacs/no-Mule. - -@item -If you are not an extremely good @TeX{} hacker, it would be impossible -to adopt this approach to support more than 256 characters. -@end itemize - -A third alternative would be very similar to the method used in this -package. There would be just a slight difference when running under -XEmacs/no-Mule: the internal representation of a character is always -just one character, but we would also provide font properties for -characters not of your default font. The disadvantages make this -approach too unsafe: - -@itemize @bullet -@item -Problems with current search/replace commands. - -@item -Problems with the current version of @code{font-lock} (it should @emph{never} -overwrite the font property for this character, even if the character -matches some @var{match} in @code{font-lock-keywords} and -@var{overwrite} is non-@code{nil}). This gets even more difficult with -superscripts/subscripts. - -@item -Unless you can provide a syntax table for faces (you cannot), characters -in different faces with the same encoding are in the same syntax class, -which is irritating: e.g., @code{\leftrightarrow} and @code{\approx} -would be delimiters. - -@item -Needs pre/post-conversion in lisp when using executables for the conversion. -@end itemize - - -@node Alt Global Mode, Alt Auto Conversion, Alt Token Representations, Design Alternatives -@comment node-name, next, previous, up -@subsection Alternative Ways to Turn on X-Symbol Globally -@cindex Alternative Global Mode -@cindex Global Mode, Alternatives -@cindex Turn on Globally, Alternatives - -This package hooks itself into @code{hack-local-variables-hook} which -makes the installation very simple. - -Another possibility would be to use the major-mode hooks which is the -normal way how to turn on a minor mode. The disadvantages are: - -@itemize @bullet -@item -The installation is more complicated. - -@item -Local variables in files are not yet processed (this was the main reason -not to do it this way). -@end itemize - -Another possibility would be to hook X-Symbol into -@code{find-file-hooks}, as it is done in old versions of package -X-Symbol. It would be as easy as the current approach but we would have -to be careful with sequence of functions in @code{find-file-hooks}, -especially with the function hooked in by @code{font-lock}. - - -@node Alt Auto Conversion, , Alt Global Mode, Design Alternatives -@comment node-name, next, previous, up -@subsection Alternative Auto Conversion Methods -@cindex Alternative Auto Conversion -@cindex Auto Conversion, Alternatives - -@vindex hack-local-variables-hook -@vindex after-insert-file-functions -@vindex write-region-annotate-functions -Without package @code{crypt}, this package automatically decodes tokens -when turning on the minor mode (in @code{hack-local-variables-hook}, -@pxref{Alt Global Mode}) or in @code{after-insert-file-functions}. This -package automatically encodes characters in -@code{write-region-annotate-functions}. The disadvantage is that the -possibility to change buffers in @code{write-region-annotate-functions} -is not official (@pxref{Wishlist Emacs}), i.e., not mentioned in the -docstring (only mentioned for corresponding encode-functions of package -@code{format} which use a similar loop in the C code). - -@vindex write-file-hooks -With package @code{crypt}, this package automatically decodes tokens -when turning on the minor mode. This package automatically encodes -characters in @code{write-file-hooks}. The disadvantage is that the -encoding is slower (use @code{jka-compr} instead @code{crypt}) and the -problem with @code{vc-next-action} (@pxref{Spurious Encodings}). - -@vindex write-file-data-hooks -Without package @code{crypt}, Version 2.6 of this package automatically -encoded characters in @code{write-file-data-hooks}. The advantage was -that changing buffers there is official, the disadvantage is that it is -also more complicated. - -@pindex format -A totally different method would be to use package @code{format}. -Unfortunately, this is not really possible, since a @var{regexp} in -@code{format-alist} is much too weak, i.e., X-Symbol's decoding does not -change any file headers which would represent the file format. In -XEmacs, this package also fails to work properly with @code{jka-compr} -and @code{crypt}. - -@c ==================================================================== - -@node Language Internals, Misc Internals, Design Alternatives, X-Symbol Internals -@comment node-name, next, previous, up -@section Language Internals -@cindex Language Internals -@cindex Token Language Internals -@cindex Internals, Languages -@cindex Registered Languages -@cindex Loaded Language -@cindex Initialized Language -@cindex Language Access -@cindex Accessing Language Depending Variables - -In order to use a token language or accessing one of the language -dependent values, the following conditions must be met: - -@itemize @bullet -@item -The language must be @dfn{registered}. This makes it possible to select -the language in the menus. It also prevents to load a potentially -dangerous file when a file specifies a buffer-local value of -@code{x-symbol-language}. - -@ftable @code -@item x-symbol-register-language -Registering a language includes stating the name of the feature (i.e., a -file) which provides the language. The name of the language must have -been already defined. -@end ftable - -@item -The file providing the language must have been @dfn{loaded}. This will -be done automatically when the language is initialized. Customizing -X-Symbol will also load the language files. - -@item -The language must be @dfn{initialized}. This will be done automatically -if the language is used. This loads the language file and fails if the -language has not been registered. If some minor language information is -needed, e.g., in the highlight menu of the Grid (@pxref{Input Method -Grid}), you should initialize the language explicitly, e.g., by the -following command: - -@table @kbd -@item M-x x-symbol-init-language-interactive -@findex x-symbol-init-language-interactive -Initialized a token language if it is not already initialized. -@end table -@end itemize - -Language dependent values are accessed by language accesses: - -@table @code -@item x-symbol-language-value -@findex x-symbol-language-value -Returns the language depending value. Also initializes language if -necessary. E.g., we get the name of a language by the language access -@code{x-symbol-name}. With a simplified expansion, we get - -@lisp -(x-symbol-language-value 'x-symbol-name 'tex) - @expansion{} (symbol-value (get 'tex 'x-symbol-name)) - @result{} (symbol-value 'x-symbol-tex-name) - @result{} "TeX macro" -@end lisp - -@item x-symbol-language-access-alist -@vindex x-symbol-language-access-alist -List of all language accesses. A token language @emph{must} define all -variables accessed by language accesses. A @dfn{language access} is a -property of the language symbol, its value is the symbol naming a -variable whose value is used. - -If the language is a derived language, e.g., like language @code{utex}, -the language access @code{x-symbol-font-lock-keywords}, should point -directly to the variable of the parent language (here @code{tex}), see -file @file{x-symbol-utex.el}. -@end table - - -@c Hi, X-Symbol's interna have changed considerably with v4.3.1-alpha. For -@c token languages to work with new versions of X-Symbol, it is important -@c to define some new language accesses (you -@c can also delete some if you do not want X-Symbol backward compatiblity) - -@c The reason for the change is: - -@c * more general ways to define the "grammar" of tokens, also useful for -@c ProofGeneral's languages, see below. -@c * faster conversion (I also dropped the support of executables) - - -@c As an example, let's look at x-symbol-texi.el): - -@c The following vars must now be defined (value nil...) - -@c (defvar x-symbol-texi-generated-data nil) - -@c Now the interesting part: - -@c (defvar x-symbol-texi-token-grammar -@c '(x-symbol-make-grammar -@c :encode-spec '(?@) -@c :decode-regexp -@c "@\\(?:[A-Za-z]+{[A-Za-z]?}\\|[{}]\\|[~^\"'`][A-Za-z]\\|,{[A-Za-z]}\\)" -@c :decode-spec '(?@)) -@c "Token grammar for language `texi'.") - -@c (defvar x-symbol-texi-input-token-grammar -@c '("@\\(?:[A-Za-z]+{[A-Za-z]?}\\|[{}]\\|[~^\"'`][A-Za-z]\\|,{[A-Za-z]}\\)\\'" -@c ?@) -@c "Grammar of input method Token for language `texi'.") - -@c In short, not too difficult if the token grammar is regular (even -@c simpler for SGML entities). The good news: powerful enough for -@c irregular token grammar which couldn't be defined with previous versions -@c of X-Symbol. - -@c The conversion now works as follows: - -@c 1. decode (token->char): search for regexp, then decode match except if -@c context is "bad". -@c 2. encode (char->token): search for non-ascii/8bit, then encode match. -@c Surround by spaces if context is "bad". - -@c The "token grammar" is simply a definition of the regexp and the bad -@c contexts, which can be different for different "shapes" of the token. -@c A special BEFORE context is the escape character: this character may -@c appear exactly even times before the token; it will be used for -@c all shapes. - -@c Lets assume a language "Isabelle Symbol" plus symbols for identifiers -@c and operators (see below for lisp coding): - -@c shape nil: \<NAME> -@c shape id: [A-Za-z_][A-Za-z_0-9]+ -@c shape op: [<>!+-*/|&]+ - -@c To make the conversion fast, the shape must be given at definition time, -@c i.e., the init must get tokens in the form (TOKEN . SHAPE). -@c Either per hand or computed via function in language access -@c x-symbol-token-list... - -@c The decode-regexp must match all tokens and: - -@c a. should be specific enough to make the conversion fast -@c b. must be general enough to match strings which should not be -@c considered to contain a token even if a substring is a token (to -@c avoid excessive context checking) - -@c In our example, the regexp would be something like - -@c "\\\\<[A-Za-z]+>\\|[A-Za-z_][A-Za-z_0-9]+\\|[<>!+-*/|&]+" - -@c No bad context has to be defined for decoding since the regexp is -@c general enough. - -@c For encoding, we have to define the following bad contexts (no context -@c can be defined for shape nil): - -@c shape id: BEFORE: [A-Za-z_0-9], AFTER: [A-Za-z_0-9] -@c shape op: BEFORE: [<>!+-*/|&], AFTER: [<>!+-*/|&] - -@c BEFORE is a regexp used via `string-match' with the character before the -@c character to encode; if it matches, we put a space before the token for -@c the character. AFTER is a regexp used with `looking-at' with point -@c after the character. We would put a space after the token. - -@c There is probably no escape char defined for Isabelle Symbols (i.e., -@c "\\" is no token). - -@c The input-token-grammar is very similar to the decode-grammar: the -@c regexp should end with \\' such that only matches ending at point will -@c get replaced, and we should define a bad context (which will be -@c tried to match against `last-command-char'). - -@c This makes the grammar below. - -@c Hope this helps, -@c - Christoph - - -@c (defvar x-symbol-xisa-token-grammar -@c '(x-symbol-make-grammar -@c :encode-spec '(((id . "[A-Za-z_0-9]") (op . "[<>!+-*/|&]")) . -@c ((id . "[A-Za-z_0-9]") (op . "[<>!+-*/|&]"))) -@c :decode-spec nil -@c :decode-regexp "\\\\<[A-Za-z]+>\\|[A-Za-z_][A-Za-z_0-9]+\\|[<>!+-*/|&]+" -@c :token-list #'x-symbol-xisa-default-token-list)) - -@c (defvar x-symbol-xisa-input-token-grammar -@c '(("\\(?:\\\\<[A-Za-z]+>\\|[A-Za-z_][A-Za-z_0-9]+\\|[<>!+-*/|&]+\\)\\'") -@c ((id . "[A-Za-z_0-9]") (op . "[<>!+-*/|&]")) -@c (id . "[A-Za-z_0-9]") (op . "[<>!+-*/|&]"))) - -@c (defun x-symbol-xisa-default-token-list (tokens) -@c (mapcar (lambda (x) -@c (cons x (cond ((string-match "\\`[A-Za-z_][A-Za-z_0-9]+\\'" x) 'id) -@c ((string-match "\\`[<>!+-*/|&]+\\'" x) 'op)))) -@c tokens)) - -@c (defun x-symbol-xisa-table -@c '((product () "\\<Prod>") -@c (longarrowright () "-->") -@c (alpha () "alpha"))) - - -@c ==================================================================== - -@node Misc Internals, , Language Internals, X-Symbol Internals -@comment node-name, next, previous, up -@section Miscellaneous Internals - -TODO. This is currently just a collection of unrelated stuff. - -@c was in "Char Group -Characters might also define a @dfn{subgroup} which is a string defining -some order on characters in the same group (@pxref{Char Group}) and is -also used for default contexts/bindings (@pxref{Customizing Input -Methods}). - -@vtable @code -@item x-symbol-group-syntax-alist -Lists all valid character groups. Under Emacs and XEmacs/Mule, this -list also determines the syntax of characters. -@end vtable - -The character group could probably also be used to define character -categories if they are implemented in XEmacs. - -@c =========================================================================== - -@node Problems, History, X-Symbol Internals, Top -@comment node-name, next, previous, up -@chapter Problems, Troubleshooting -@cindex Problems -@cindex Troubleshooting -@cindex Annoyances -@cindex Bugs - -This section is based on a successful installation of package X-Symbol. -@xref{Checking Installation}. - -@menu -* Nomule Problems:: X-Symbol provides a @emph{poor} man's Mule. -* Spurious Encodings:: Some commands turn off X-Symbol mode. -* No Encoding:: The encoding does not work in a rare case. -* FAQ:: Frequently asked questions. -* Bug Reports:: How to contact the maintainer of X-Symbol. -@end menu - -@c =========================================================================== - -@node Nomule Problems, Spurious Encodings, Problems, Problems -@comment node-name, next, previous, up -@section Problems under XEmacs/no-Mule -@cindex Nomule Problems -@cindex @code{transpose-chars} Problems -@cindex Replace Problems -@cindex Rectangle Problems -@cindex Abbrev Problems -@cindex Invisible Point -@cindex Parenthesis Problems -@cindex Fill Problems - -If you use package X-Symbol under XEmacs/no-Mule, there are some -annoyances which result from the fact that additional ``X-Symbol -characters'' are represented by two characters internally. Package -X-Symbol just provides a kind of ``@emph{poor} man's Mule'', see -@ref{Poor Mans Mule}. This means: I have provided workarounds for the -most annoying ones, but some remain (and will remain: I am not going to -provide workarounds for these): - -@itemize @bullet -@item -If @code{font-lock} is not prepared to display these two-character -sequences, i.e., if you installation is incomplete (@pxref{Role of -font-lock}), they look like @samp{\233a} instead @code{alpha}. - -@item -Commands which add more than one entry to the @code{buffer-undo-list} -and involve X-Symbol characters might lead to strange results, -e.g. @kbd{C-t} (@code{transpose-chars}) with point between character -@code{alpha} and @samp{b}, leads to @code{beta}@samp{a}. Simple -deletion and insertion works OK, though. - -@item -Selecting or inserting a rectangle with X-Symbol characters on the left -or right margin might not work properly. - -@item -Be careful with @kbd{M-%} (@code{query-replace}): the first character of -@var{from-string} can probably match the second of the two ``internal'' -characters of an X-Symbol character. - -@item -If you use @kbd{C-x '} (@code{expand-abbrev}) without @kbd{M-'} -(@code{abbrev-prefix-mark}) and the last word before point starts -directly after a X-Symbol character, @kbd{C-x '} could behave strange: - -@itemize @minus -@item -If @code{words-include-escapes} is @code{t}, there will be no expansion. - -@item -If @code{words-include-escapes} is @code{nil}, the second ``internal'' -character could be the first character of the last word before point -which is going to be replaced by the abbrev mechanism. -@end itemize - -@item -If the character under point is a X-Symbol character, you will not see -the cursor if you exit a command with an error or with quit (@kbd{C-g}). -Unfortunately, XEmacs (as opposed to Emacs) does not run the hooks in -@code{post-command-hook} in these cases. Solution: move point right -(@kbd{C-f}). - -@item -If you provide prefix arguments to commands, they are likely to consider -just ``internal'' characters. E.g., @kbd{C-u 2 C-f} before @code{alpha} -behaves like @kbd{C-f}. - -@item -Column position considers ``internal'' characters, e.g., @kbd{C-n} might -jump to an unexpected position (well, typically just one character -left/right from the expected position, if at all). - -@item -Auto-filling also considers ``internal'' characters, i.e., might break -the line too early. - -@item -There are no syntax definitions for the new characters, e.g., -@kbd{M-C-f} before @code{floorleft} does not move to the closing -@code{floorright}. - -@item -In some cases, e.g., when using the minibuffer for input via @kbd{M-%} -or @kbd{C-s}, the internal representation of X-Symbol characters -(@pxref{Char Representation}) are displayed directly (@pxref{FAQ Strange -Chars}) -@end itemize - -@c ==================================================================== - -@node Spurious Encodings, No Encoding, Nomule Problems, Problems -@comment node-name, next, previous, up -@section Spurious Encodings -@cindex Spurious Encodings -@cindex Version Control Problems -@cindex @code{write-file} Problems -@cindex @code{vc} Problems -@cindex Revert Buffer Problems - -@pindex vc -In rare cases, some commands (mostly from package @code{vc}) encode -characters to tokens or even turn off X-Symbol mode. Package X-Symbol -will not provide a workaround for these problems, because the situations -in which they appear are too rare, the workarounds are easy, and the -problems are not really caused by package X-Symbol. - -@itemize @bullet -@item -@pindex crypt -Doing the next logical version control operation (@kbd{C-x v v} and -friends) encode characters to tokens when using package @code{crypt}. - -Solution: use package @code{jka-compr} instead @code{crypt} (this is -recommended anyway, @pxref{File IO Packages}). Or kill the buffer and -revisit the file. - -@item -@pindex auctex -When using Auc@TeX{} with its default-mode algorithm, getting rid of the -recently checked-in version of a file without reverting the buffer -afterwards (@kbd{C-u C-x v c}) turns off X-Symbol mode without encoding -the characters, e.g. under XEmacs/no-Mule, you see some strange -characters like @samp{\233a}. - -Explanation: when using Auc@TeX{}'s @code{TeX-default-mode}, the final -@code{major-mode} is different from the initial @code{major-mode} -deduced using @code{auto-mode-alist}. If this is the case, the VC -command executes @code{normal-mode} which kills all local-variables -including turning-off @code{x-symbol-mode}. - -Solution: Turn on X-Symbol mode or change @code{auto-mode-alist} to -directly choose @code{latex-mode}: - -@lisp -(push '("\\[tT]e[xX]\\'" . latex-mode) auto-mode-alist) -@end lisp - -@item -@findex write-file -@vindex change-major-mode-with-file-name -When using Auc@TeX{} with its default-mode algorithm, writing a La@TeX{} -buffer into a file with another file name turns off X-Symbol mode. - -Explanation: Emacs sets the major mode with the file name. When using -Auc@TeX{}'s @code{TeX-default-mode}, we get the problems as described in -the previous item. - -Solution: Set @code{change-major-mode-with-file-name} to @code{nil} or -use the solution from the previous item. -@end itemize - -@c ==================================================================== - -@node No Encoding, FAQ, Spurious Encodings, Problems -@comment node-name, next, previous, up -@section The Encoding Does Not Work -@cindex No Encoding -@cindex @code{write-region} Problems - -In a rare case, X-Symbol cannot do its encoding, i.e., convert the -characters to tokens. - -@itemize @bullet -@item -@findex write-region -@pindex crypt -@vindex write-file-hooks -@kbd{M-x write-region} fails to do the encoding if you use package -@code{crypt}. - -Explanation: with package @code{crypt}, the encoding has to be done by a -function in @code{write-file-hooks} which is not used by -@code{write-region}. - -Solution: use package @code{jka-compr} instead @code{crypt} (this is -recommended anyway, @pxref{File IO Packages}). Or visit the region file -and save it again via @kbd{C-x C-s}. -@end itemize - - -@c =========================================================================== - -@node FAQ, Bug Reports, No Encoding, Problems -@comment node-name, next, previous, up -@section Frequently Asked Questions -@cindex Frequently Asked Questions -@cindex FAQ X-Symbol - -It is assumed that you had successfully installed package X-Symbol, see -@ref{Checking Installation}. - -@menu -* FAQ XEmacs Core:: XEmacs crashes when using input method Token -* FAQ font-lock:: X-Symbol's fontification does not work. -* FAQ Strange Chars:: The buffer contains strange characters -* FAQ No Subscripts:: I cannot see any/some super-/subscripts. -* FAQ Stupid Subscripts:: I see subscripts where I don't want them. -* FAQ Font Size:: The characters are too small or too big. -* FAQ Conversion:: The conversion changes some tokens. -* FAQ Additional Spaces:: A space is added during the encoding. -* FAQ 8bit Chars:: I do not want 8bit characters in the file. -* FAQ Hyphen:: I cannot distinguish @code{hyphen} from @samp{-}. -* FAQ Spell Check:: I have problems with spell-checking. -@end menu - - -@node FAQ XEmacs Core, FAQ font-lock, FAQ, FAQ -@comment node-name, next, previous, up -@subsection XEmacs Crashes when using Input Method Token -@cindex XEmacs Core -@cindex Core XEmacs -@cindex Crash XEmacs -@cindex Input Method Token - -It has been reported that XEmacs-21.0 to XEmacs-21.1.8 might produce -cores when you use input method Token. That's why I strongly recommend -to use XEmacs-21.1.9 or higher with package X-Symbol, see -@ref{Requirements}. - -You get a warning during X-Symbol's initialization when using these -XEmacs versions. If you don't want to upgrade, but also don't want to -see the warning, you might want to set variable -@code{x-symbol-xmas-warn-about-core} to @code{nil}. - -A core in XEmacs always indicates a bug in XEmacs itself, not in a lisp -package like X-Symbol. Thus, send a bug report to the XEmacs team if -you get cores with the @emph{newest} version of XEmacs (please put me in -the CC). - - -@node FAQ font-lock, FAQ Strange Chars, FAQ XEmacs Core, FAQ -@comment node-name, next, previous, up -@subsection X-Symbol's Fontification does Not Work -@pindex font-lock -@cindex No fontification -@cindex @code{font-lock} Problems - -In this case, super- and subscripts are not properly displayed -(@pxref{FAQ No Subscripts}) and under XEmacs/no-Mule, the buffer -contains s.th. like @samp{\233a} (@pxref{FAQ Strange Chars}). -Possible causes: - -@itemize @bullet -@findex x-symbol-fontify -@item -You have turned off @code{font-lock} or @code{font-lock} is out of sync. -Use @kbd{M-x x-symbol-fontify}. @xref{Role of font-lock}. - -@item -The font-lock keywords of the current buffer are not prepared to display -X-Symbol characters. @xref{Role of font-lock}. - -@item -@vindex fast-lock-save-faces -You use package @code{fast-lock}. Solution: set -@code{fast-lock-save-faces} to @code{nil} (done by default -installation). - -@item -You use some version control commands. You have probably noticed that -these versions control commands also turn off @code{font-lock} in modes -where you don't use X-Symbol, i.e., this is not a problem of package -X-Symbol. @pxref{Wishlist Emacs} and @ref{Spurious Encodings}. -@end itemize - - -@node FAQ Strange Chars, FAQ No Subscripts, FAQ font-lock, FAQ -@comment node-name, next, previous, up -@subsection The Buffer Contains Strange Characters -@cindex Strange Characters -@cindex Funny Characters -@cindex Character Problems -@cindex Escape Character Problems -@pindex Mathematica - -If you see s.th. like @samp{\233a}, you see the internal representation -of X-Symbol characters under XEmacs/no-Mule (@pxref{Char -Representation}) directly. Possible causes: - -@itemize @bullet -@item -You have @code{font-lock} problems, see @ref{FAQ font-lock}. - -@item -More complicated editing commands like @kbd{C-t} may produce strange -character sequences which do not represent X-Symbol characters, see -@ref{Nomule Problems}. - -@item -In some cases, e.g., when using the minibuffer for input via @kbd{M-%} -or @kbd{C-s}, it would be too much work to fontify these character -sequences in order to display proper X-Symbol characters. @xref{Nomule -Problems}. -@end itemize - -If Emacs shows some strange glyphs for some characters in your buffers -but not the Grid, there is a font in you font path which pretends to -have charset registry-encoding @code{adobe-fontspecific}, but in fact -uses another encoding. E.g., Mathematica's fonts cause the characters -intersection and union to mix up. Possible solutions: - -@itemize @bullet -@item -Delete that font from the font path. Maybe moving it at the end also -works. - -@item -In Emacs-21, you have the chance to disable the use of some fonts (if -you know something similar for XEmacs, please let me know). For -example, to disable the fonts from Mathematica, use - -@lisp -(setq face-ignored-fonts '("\\`-wri-math1")) -@end lisp - -@item -If the characters show up correctly initially, but mix up after some -font changing command, don't use that command. E.g., the font selection -in XEmacs via the Options menu seems to loose some information about the -original font. OK, this is not really a satisfying solution, but the -whole issue isn't my fault, either. -@end itemize - - -@node FAQ No Subscripts, FAQ Stupid Subscripts, FAQ Strange Chars, FAQ -@comment node-name, next, previous, up -@subsection I Cannot See any/some Super- or Subscripts -@cindex No Subscripts -@cindex Subscript Problems -@cindex Superscript Problems - -If you cannot select @samp{Super-/Subscripts} in the menu, the first of -the following points is more likely the cause, the others otherwise. - -@itemize @bullet -@item -You have @code{font-lock} problems, see @ref{FAQ font-lock}. - -@item -There are cases where super- and subscripts are not displayed, see -@ref{Super and Subscripts}. - -@item -The argument in braces are not correctly recognized, since the -@code{font-lock} syntax-table is not correct. It should include -@samp{@{} as the only open parenthesis and @samp{@}} as the only close -parenthesis character. Note that this is quite difficult to archive -under Emacs and XEmacs/Mule. This is a minor bug in the corresponding -@code{font-lock} package, but would require other changes there, -therefore not likely to be fixed. Fortunately, this does not happen -often. -@end itemize - - -@node FAQ Stupid Subscripts, FAQ Font Size, FAQ No Subscripts, FAQ -@comment node-name, next, previous, up -@subsection I See Super- and Subscripts where I Don't Want Them. -@pindex font-lock -@pindex font-latex -@cindex Stupid Subscripts -@cindex Annoying Subscripts -@cindex Label Subscripts -@cindex Subscript Problems -@cindex Superscript Problems - -E.g., I see a subscript in arguments of @code{\label}. Package X-Symbol -only uses super- and subscripts if they are in braces, if the -@code{asciicircum}/@code{underscore} has not been fontified yet or is -only fontified with faces which are allowed by -@code{x-symbol-tex-font-lock-allowed-faces}, see @ref{Super and -Subscripts}. - -@itemize @bullet -@item -You use the default @code{tex-font-lock-keywords}: The argument of -@code{\include} and friends are not fontified by these, i.e., the use of super- -and subscripts are not prohibited. Solution: add your own keyword for -these commands or use package @code{font-latex}, see below. - -@item -You use package @code{font-latex}. Solution: set -@code{font-lock-maximum-decoration} to value @code{t}, 2 or higher. -Package X-Symbol will still use subscripts in @code{\verb}, in the -@code{verbatim} environment, in the argument of @code{\includegraphics} -and probably other commands. Some of these problems will probably be -solved by future versions of @code{font-latex}. - -@item -You use my font-lock keywords (file @file{x-font-lock.el}): everything -should work fine. Please note that this file is not meant to be a -replacement of @file{font-latex.el} useful to all users. Also, -highlighting is a matter of taste, i.e., I am not going to change the -@file{x-font-lock.el} to support La@TeX{}-2.09, @TeX{}'s math regions, -other likings, etc. - -@item -You use your own font-lock keywords for @TeX{}. In this case, you be able -to adapt the solutions from the previous points to your situation. -@end itemize - - -@node FAQ Font Size, FAQ Conversion, FAQ Stupid Subscripts, FAQ -@comment node-name, next, previous, up -@subsection The Characters are Too Small or Too Big -@cindex Font Size -@cindex Big Characters -@cindex Small Characters - -Why aren't there more different font sizes? Because nobody (including -the author) was in the mood to design them (actually only the xsymb1 -font needs to be designed). @emph{Please do only ask the author whether they -are in work if you are serious to do it yourself otherwise!} - -Why do I get a lower-case letter when I should get a capital letter (or -vice versa)? Please convince yourself (@pxref{Info}) that you actually -get the correct letter---they are just of different sizes. -@xref{Installing Fonts Lisp}. - -I was told that the xsymb1 font scales reasonably well to a larger font -size---if you don't think so, design a new font and send me the result. - - -@node FAQ Conversion, FAQ Additional Spaces, FAQ Font Size, FAQ -@comment node-name, next, previous, up -@subsection The Conversion Changes Some Tokens -@cindex Token Changes -@cindex Conversion Problems -@cindex Encoding Problems - -In most token languages, a character might be represented by different -tokens. If this character is encoded (when saving the buffer), the -canonical representation is saved. @xref{Unique Decoding}. - -@itemize @bullet -@item -Solution: Do not redefine standard @TeX{} macros or use unique decoding. -@end itemize - - -@node FAQ Additional Spaces, FAQ 8bit Chars, FAQ Conversion, FAQ -@comment node-name, next, previous, up -@subsection A Space is Added During the Encoding -@cindex Additional Spaces -@cindex Token Problems -@cindex Encoding Problems -@cindex Space Problems - -A space is added after some characters during the encoding to tokens. -With token languages @code{tex} and @code{utex} (not with language -@code{sgml}), there must be a space after the token to recognize its end -in some cases. - -E.g., if your buffer contains @samp{a+b} (where + stands for the -character @code{circleplus}), this is encoded to @samp{a\oplus b} (note -the space after @code{\oplus}). Decoding it yields @samp{a+ b}. - -I admit, this looks ugly. The space is only added if the symbol -character is followed by a letter or by @samp{@@}. Thus, decoding -@samp{a\oplus\beta} yields @samp{a+b} (without space!). - -@itemize @bullet -@item -Suggestion: Also use a space before @code{\oplus}. The alternative -would be to delete the space which other people won't like. -@end itemize - -@xref{TeX Macro Conversion} for an exact description. - - -@node FAQ 8bit Chars, FAQ Hyphen, FAQ Additional Spaces, FAQ -@comment node-name, next, previous, up -@subsection I Don't Want 8bit Characters in the File -@cindex 8bit Character Problems -@cindex No 8bit Characters - -By default, these are not encoded if the buffer-local variable -@code{x-symbol-8bits} is non-@code{nil}. - -By default, this variable is only set to non-@code{nil}, if something like - -@example -\usepackage[latin1]@{inputenc@} -@end example - -is found at the beginning of the file. That line does not make sense if -you do not have 8bit characters in the file, i.e., delete it. -@xref{File Coding}. Note: commenting the line is not enough! (I do not -run La@TeX{} to check for the line, I just do plain text search.) - - -@node FAQ Hyphen, FAQ Spell Check, FAQ 8bit Chars, FAQ -@comment node-name, next, previous, up -@subsection I Cannot Distinguish Character @code{hyphen} from @samp{-} -@cindex Hyphen Versus Minus -@cindex Minus Versus Hyphen - -In most fonts, the Latin character @code{hyphen} cannot be distinguish -from the Ascii character @samp{-}. If you do not want to decode the -corresponding token @code{\-} or @code{­}, put the following into -your @file{~/.emacs}: - -@lisp -(setq x-symbol-tex-user-table '((hyphen))) -(setq x-symbol-sgml-user-table '((hyphen))) -@end lisp - -A better alternative would be to make @code{font-lock} display these -character in a different color. - - -@node FAQ Spell Check, , FAQ Hyphen, FAQ -@comment node-name, next, previous, up -@subsection Problems with Spell-checking -@cindex Spell Checking -@pindex ispell -@findex ispell-word -@findex ispell-region - -As explained in @ref{Miscellaneous Packages}, @code{ispell} assumes the -buffer contents to be the same as the file contents and does not provide -any hook to fix this. This might break @code{ispell-word} and -@code{ispell-region}. Possible symptoms: - -@itemize @bullet -@item -A word which contains letters which the program @code{ispell} does not -know about is either not spell-checked or parts of it are spell-checked -as independent words. - -Solution: Use the @code{ispell}s 8bit dictionaries even if you do not -store 8bit characters in the file. This should fix the problem for -almost every word, except, e.g., words containing the Latin-9 character -@code{oe} if you use a Latin-1 encoding. - -@item -Spell-checking might stop with the error message @samp{Ispell -misalignment}. I can reproduce this only with Emacs, not with XEmacs. - -Question: If you know some settings (like for -@code{process-coding-system-alist}) which solves this problem, please -let me know! - -Solution: turn X-Symbol off before spell-checking your buffer. This is -of course no option if you use @code{flyspell}. -@end itemize - -The real solution would be to fix @code{ispell}, at least by providing a -useful hook which allows X-Symbol to fix the problem. @xref{Wishlist -Emacs}. You are strongly encouraged to send a patch to the maintainer -of @code{ispell}, you even get a paragraph here in -@ref{Acknowledgments}! - -@c =========================================================================== - -@node Bug Reports, , FAQ, Problems -@comment node-name, next, previous, up -@section How to Send a Bug/Problem Report -@cindex Bug Reports -@cindex Problem Reports -@cindex Contacting the Maintainer -@cindex Maintainer Address -@cindex Email to the Maintainer -@cindex Reports of Bugs - -Bug fixes, bug/problem reports, improvements, and suggestions are -strongly appreciated. So are corrections to this manual (better -explanations, correcting my English, @dots{}). Especially useful would be -some feedback by people using default fonts with a charset -registry-encoding other than @code{iso8859-1} (Western encoding). - -Please read this section carefully, even if you generally know how to -send a bug report (@pxref{Bugs,,,xemacs,XEmacs User's Manual}). -This might look tedious to you, but it actually saves a lot of time -(your time, too). - -For each bug/problem report or question you want to send to the -maintainer, please use the following sequence: - -@enumerate -@item -Make sure that you use the @strong{newest version} of X-Symbol. You are -reading Edition 4.4.5 of the manual for X-Symbol -4.4.5. - -@item -Read the manual, especially @ref{Checking Installation}, @ref{Problems} -and @ref{FAQ}. The four indexes (@pxref{Indexes}) might also lead you -to an answer to your question. - -@item -Use @kbd{M-x x-symbol-package-bug} (also to be found in X-Symbol's -Command submenu) to write your report describing @strong{one} bug or -problem, i.e., use @strong{different mails} for @strong{unrelated -problems}. Please do not ``reuse'' a mail thread with the maintainer, -i.e., if you start a section with ``Here is another problem'', you do -something wrong. - -If Emacs is not your mail tool, copy the Subject header line and the -message body from Emacs' @file{*mail*} buffer to your mail tool. - -If @kbd{M-x x-symbol-package-bug} fails to work, you have a problem with -your installation and your report should be about this problem. In this -case, use @samp{x-symbol @var{version}; @var{summary}} as Subject header -where @var{version} is the version of X-Symbol and @var{summary} is a -brief summary of your installation problem. - -(@emph{Rationale}: This command automatically extracts some essential -information without any work by you. Don't waste your time pondering whether -you should really use this command to write your report. The additional -advantage is that I can see who doesn't have any problems wasting my -time.) - -@item -Start your report with: - -@quotation -In the manual, I checked the sections @var{section1}, @var{section2}, -@dots{}, but didn't find anything which helped me with the following -problem: -@end quotation - -The sections @var{section1}, @var{section2}, etc are names (not -numbers!) of the sections (not whole chapters!) in the manual where you -would expect an answer to your question/problem/bug. - -If you didn't know which sections to inspect, please check the indexes. -If they are not helpful, send me words/terms which should be included in -the indexes. - -(@emph{Rationale}: This way, I get an idea where to improve the manual, -especially by adding cross references. It also ensures that you really -have tried to find the relevant information yourself.) - -@item -If buffer @file{*Warnings*} does not exist in the buffer menu, -everything is fine so far. So is (for me as the author of package -X-Symbol), if @samp{X-Symbol} is not mentioned there. Otherwise, -include the contents of buffer @file{*Warnings*} into your bug report. - -@c TODO: without warnings.el from Emacs-21.4 -Temporary Emacs (< v21.4) note: the warnings might be somewhere hidden -in buffer @file{*Messages*}. - -@item -Put the parts of the code from @file{~/.emacs} and the system-wide files -which causes the problem into a fresh file @file{@var{my-problem}.el}. -The problem/error should be visible when invoking - -@example -xemacs -no-site-file -q -l @var{my-problem}.el -@end example - -In the minimal case, @file{@var{my-problem.el}} just contains the -following line (@pxref{Installing Lisp}): - -@lisp -(x-symbol-initialize) -@end lisp - -If the error has disappeared after you have included your complete -@file{~/.xemacs/init.el} and @file{~/.emacs}, the problem is likely -caused by some code of your system-wide installation. Include the code, -which can be found using command @kbd{M-x find-library} with files -@file{site-start} and @file{default} (everything is fine if these files -do not exist). - -If you use @file{x-symbol-site.el} (its use is deprecated), copy its -contents into @file{@var{my-problem.el}} and delete the corresponding -@code{load} command. - -Attach the file @file{@var{my-problem}.el} to your report. -@strong{Please try to minimize the size of @file{@var{my-problem}.el}}! -A standard technique is recursive halving: Delete the second half of -@file{@var{my-problem.el}}. If the problem disappears, delete the first -half instead. Do the same with the smaller file again, @dots{}. - -(@emph{Rationale}: Most problems are a consequence of some specific -customizations, but I don't have time to debug each user's init file.) - -@item -If you have set variable @code{custom-file} in -@file{@var{my-problem}.el}, attach the corresponding file to your report. - -@item -If the error can only be reproduced in combination with another Emacs -package, please send me: - -@itemize @minus -@item -If it is included in the standard Emacs/XEmacs distribution / if is an -XEmacs package: the version you use if it is not that from the -Emacs/XEmacs distribution (use @kbd{M-x find-library} to check whether -you really use the version from the Emacs/XEmacs distribution). - -@item -If it is a non-standard (and non-obscure) package: the URL of the -distribution and/or the source. - -@item -Otherwise: include its code into @file{@var{my-problem}.el} and delete -the corresponding @code{load} or @code{require} command. Then, reduce -the size of @file{@var{my-problem}.el} as described above. -@end itemize - -@item -If the problem is not reproducible with an @emph{arbitrary} -(@file{.tex}, @file{.html}, @dots{}) file, try to minimize the file such that -the problem can be still reproducible, and include the file with its -full file name into your bug report. - -(@emph{Rationale}: Most problems are only reproducible with specific -files.) - -@ignore -@item -I would appreciate, if you would set variable @code{debug-on-error} to -@code{t} before you trigger the error and send me the contents of buffer -@file{*Backtrace*}. At best, using the uncompiled versions of the -functions involved, i.e., by jumping to its definition and evaluation it: - -@example -M-x find-function @key{RET} @var{function} @key{RET} C-M-f C-x C-e -@end example -@end ignore - -@item -Finally, include the exact key sequence which causes the problem into -your bug report. You should also tell me the name of the buffer in -which the problem occurred and how you have created that buffer (e.g., -by @kbd{C-x C-f @var{file} @key{RET}}). - -At best, you start your Emacs, and then try to reproduce the problem as -fast as possible (i.e., with a minimum number of key/mouse strokes). - -As soon as the problem appears, press @kbd{C-h l} and include the -contents of buffer @file{*Help*} in your bug report. - -(@emph{Rationale}: Most problems are only reproducible with point being -at a specific position in the file, with specific key sequences, etc.) - -@item -If you have problem with the display of images, please include the -output of the shell commands @samp{convert -h} and @samp{convert -list -Format} in your bug report. If the first command fails, you have a -problem with the program @code{convert}, not X-Symbol. - -@item -If necessary, include a screen-shot in your bug report. - -@item -If you could not use @kbd{M-x x-symbol-package-bug}, include the -contents of buffer @file{*Help*} after the following actions: - -@itemize @minus -@item -Type @kbd{C-h v x-symbol-version @key{RET}}. -@item -Type @kbd{C-h v emacs-version @key{RET}}. -@item -Type @kbd{C-h v features @key{RET}}. -@end itemize - -@end enumerate - -If you have solved your problem during this sequence, but you think your -situation is worth to be mention in this manual (e.g., in @ref{Package -Integration}), I would appreciate if you would send me a some new text -for this manual or a normal bug report together with your solution. - -@c =========================================================================== - -@node History, Indexes, Problems, Top -@comment node-name, next, previous, up -@chapter History and Projects - -@menu -* News:: Changes in recent versions. -* Wishlist:: Projects for X-Symbol. -* Open Questions:: How you can contribute. -* Acknowledgments:: People having contributed. -@end menu - -@c =========================================================================== - -@node News, Wishlist, History, History -@comment node-name, next, previous, up -@section News: Changes in Recent Versions of X-Symbol -@cindex New Features -@cindex Changes -@cindex History - -This is the complete history of X-Symbol. It just lists the major -changes before Version 3.0. - -@menu -* Changes New:: To be announced. -* Changes 4.4:: Released June 2002 as beta. -* Changes 4.1:: Released Mar 2002 as beta. -* Changes 3.4:: Released Mar 2002. -* Changes 3.3:: Released Jan 1999. -* Changes 3.2:: Released Dec 1998. -* Changes 3.1:: Released Oct 1998. -* Changes 3.0:: Released Sep 1998 as beta. -* Changes Old:: Overview of old releases. -@end menu - - -@node Changes New, Changes 4.4, News, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 4.4.5 - -Version 4.4.5 has not yet been announced. - -@itemize @bullet -@item -X-Symbol finally respects the Mule coding system of each individual buffer. - -@item -Bug fix: would mess up encoding of math-mode characters with token -language @code{bib}. Other conversion fixes for languages @code{bib} -and @code{texi}. - -@item -Bug fix (workaround for bug in XEmacs): auto-save files would have -length 0. - -@item -Token language @code{sgml}: always encode characters to entity -references by default (not possible with most Latin-N characters, where -we still use character entities). Include @code{hm--html-mode}, -@code{html-helper-mode}, remove @code{sgml-mode} as typical major modes. - -@item -Token language @code{tex}: support some symbols of package -@file{stmaryrd.sty}. - -@item -Change the auto-style, formerly auto-mode, mechanism. - -@item -Image support when running on Emacs. - -@item -New input method Quail, a usual Mule input method. - -@item -Corrected Latin-5 definitions. Support Latin-5 (``Turkish'') on XEmacs -running under Windows. - -@item -X-Symbol works with Emacs/XEmacs running under a character terminal. - -@item -Improments for external languages. Super-/subscript matching of token -languages has changed. - -@item -X-Symbol can use package @code{format} and does not require special -fonts for super-/subscripts with Emacs-21.4+. Still open whether this -will be used@dots{}. - -@item -Dropped support for XEmacs-20.3. - -@item -Various bug fixes and minor changes. -@end itemize - - -@node Changes 4.4, Changes 4.1, Changes New, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 4.2, 4.3, 4.4 - -Version 4.4 has been released on June 2002 as beta. - -@itemize @bullet -@item -Token language TeX has changed: no excessive use of braces anymore, no -excessive normalization, and aware of environments @code{@{tabbing@}} and -@code{@{verbatim@}}, and macro @code{\verb}. Reading and saving -``old-encoded'' files works without changes in the file (the buffer -looks different), there is also a command to remove the unwanted braces -around accented letters. - -@item -New token language ``Bib@TeX{} Macro'' (@code{bib}, similar to old -@code{tex}), used for Bib@TeX{} files. - -@item -Nuked executables, the lisp conversion for all languages is now 2-5 -times faster. - -@item -Latin-9 support. Latin-9 font included in distribution. - -@item -Works with XEmacs-21.4+ on Windows. Of course, it just supports a -limited number of characters and no super- and subscripts there due to -missing fonts. - -@item -More likely to save 8bit characters in the file by default: also look -for 8bit characters in the file when visiting the file, also inspect -master file (@code{TeX-master}) with token language @code{tex}. - -@item -New buffer-local variable @code{x-symbol-unique}: when non-@code{nil}, -decodes much less tokens to avoid near to all normalizations, used for -@TeX{}'s style files (but X-Symbol is not automatically turned on). -Dropped token language @code{utex}. - -@item -Menu changes, new commands: submenu ``Conversion'', menu items ``Copy -Encoded'', ``Paste Decoded'' and others. - -@item -Special coding for @code{preview-latex}. Using X-Symbol now only gives -a 10% overhead of @code{preview}s parsing time. - -@item -X-Symbol now works with Whizzy@TeX{}. - -@item -The interface for defining a token language has changed, it is also much -more general, useful for ProofGeneral. - -@item -Changed final bytes of ISO 2022 escape sequence for X-Symbol charsets -since Emacs reserves the characters @samp{0-9} for itself. Does XEmacs -has any policy here (it also uses @samp{?})? - -@item -Dropped workaround for minor bug in XEmacs-20.X. - -@item -Various bug fixes and minor changes. -@end itemize - - -@node Changes 4.1, Changes 3.4, Changes 4.4, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 4.1 - -Version 4.1 has been released on Mar 2002 as beta. - -@itemize @bullet -@item -X-Symbol works with Emacs-21.1 or higher. Porting is not complete, yet. - -@item -New token language ``@TeX{}info command'' (@code{texi}). - -@item -Slightly different definition of ``valid character''. - -@item -Remove the ``local if set'' and ``default: @dots{}'' submenu stuff. -@end itemize - - -@node Changes 3.4, Changes 3.3, Changes 4.1, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 3.4 - -Version 3.4 has been released on Mar 2002. - -@itemize @bullet -@item -Moved to SourceForge.net. Added files for nicer HTML output of manual. - -@item -Would sometimes perform strange conversions when -@code{global-flyspell-mode} is enabled. - -@item -Bug fixes: command @kbd{M-x write-region} would always save the whole -buffer if X-Symbol is enabled for that buffer, writing a remote file via -ange-ftp would not work (was OK with efs). - -@item -Automatically deduce default coding via @code{locale -ck LC_CTYPE}. - -@item -Issue warning when running on XEmacs-21.0 to XEmacs-21.1.8. Update -manual: XEmacs user package directory is @file{~/.xemacs/packages}. - -@item -Directories ending with @file{//} in image search paths are recursive. - -@item -New characters used for token languages ``@TeX{} macro'' and ``Isabelle -symbol''. - -@item -Make sure to convert just the first part of a multi-part image. - -@item -Source distribution includes files for building an RPM package, all -files also compile without Mule support. - -@item -Minor changes. Manual changes. -@end itemize - - -@node Changes 3.3, Changes 3.2, Changes 3.4, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 3.3 - -Version 3.3 has been released on Jan 1999. - -@itemize @bullet -@item -Package X-Symbol is really a proper XEmacs package: no need to create -fonts and to set the font path. With XEmacs/no-Mule, I still recommend -to create the executables (type @kbd{M-x x-symbol-exec-create}). - -@item -New functions used for interaction with Emacs package @code{comint}. -This is necessary for new token language ``Isabelle symbol'', to be -distributed with Emacs package -@uref{http://www.proofgeneral.org/,ProofGeneral}. - -@item -New characters used for token languages ``@TeX{} macro'' and ``Isabelle -symbol''. - -@item -Minor changes. Manual changes. -@end itemize - - -@node Changes 3.2, Changes 3.1, Changes 3.3, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 3.2 - -Version 3.2 has been released on Dec 1998. - -@itemize @bullet -@item -Package X-Symbol is a proper XEmacs package. The installation process -is much easier (using the binary package). It has changed, though! -The use of file @file{x-symbol-site.el} is deprecated. - -@item -Reverting the buffer and using @code{vc} commands do not encode -characters when not using @code{crypt}. (This did not work always.) - -@item -Workaround for bug (segfault) in XEmacs-21/Mule betas. - -@item -Command @code{x-symbol-package-bug} is less restrictive. Please use -this command to contact the maintainer. - -@item -Bug fixes. Minor changes. Manual changes. -@end itemize - - -@node Changes 3.1, Changes 3.0, Changes 3.2, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 3.1 - -Version 3.1 has been released on Oct 1998. - -@itemize @bullet -@item -@TeX{} macro @code{\mu} is represented by a character in the Adobe Symbol -font, not in a Latin-@{1,3,5@} font anymore. - -@item -Support for most @sc{sgml} entities in HTML-4.0 specification. - -@item -Additional characters for @code{\therefore}/@code{∴}, -@code{‾} and @code{€}. - -@item -Package X-Symbol has been customized. - -@item -The documentation has been completed (as @TeX{}info file). - -@item -Handle special URL prefixes @file{file:}, @file{http:} for images. - -@item -Bug fixes, configuration changes. -@end itemize - - -@node Changes 3.0, Changes Old, Changes 3.1, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 3.0 - -Version 3.0 has been released on Sep 1998 as beta. - -@itemize @bullet -@item -Package X-Symbol now works on XEmacs with and without Mule support. -Dropped support for XEmacs 19.13 to 19.16/20.2. - -@item -Full support of token language @code{sgml} (executables, subscripts, images). - -@item -X-Symbol is a proper minor mode. - -@item -Easier (automatic) 8bit character control (e.g., for @code{\times} -@code{\pm},@dots{}). By default, the encoding when saving only writes -8bit characters, if @samp{\usepackage[latin@var{n}]@{inputenc@}} with -@var{n}=1,2,3,5 was found in the first 10000 characters of the file -(including commentary). - -@item -Package X-Symbol can be easily extended with new token languages and -fonts due to its modular design. It consistently handles situations -where an entry for an additional character defines the same preferred -key binding (and context) as for a previously defined character - -@item -Key bindings have completely changed. They are now consistent with the -contexts of input method Context (which have changed a bit). - -@item -The keys @kbd{@@} and @kbd{!} are not used anymore as Modify- and -Rotate-Key. The Rotate key (instead of the Modify-Key) is used to -``Greek''ify the previous Ascii char. - -@item -Input method Aggressive Context is now called input method Electric and -is much more restrictive (using package @code{texmathp} with language -``@TeX{} macro''). - -@item -Easier installation despite many additional features. - -@item -Supports more characters. - -@item -Nicer grid, info in echo area. - -@item -Better cooperation with packages: @code{vc} (check-out does not convert -characters), @code{reftex} (no strange characters @samp{\237}, help with -label creation), @code{auctex}, @code{ispell}, @code{font-latex} (no -annoyances with @code{\exists}). - -@item -Safer use of executables. - -@item -The code has completely changed. You have to redo your installation. -@end itemize - - -@node Changes Old, , Changes 3.0, News -@comment node-name, next, previous, up -@subsection Changes in Old Releases. - -This sections gives just an overview of the major changes in the releases. - -Version 2.6 has been released on Oct 1998. - -@itemize @bullet -@item -Fixed serious bug when used under tty. -@end itemize - -Version 2.5 has been released on Mar 1998. - -@itemize @bullet -@item -Image support. -@end itemize - -Version 2.4 has been released on Mar 1997. - -@itemize @bullet -@item -Token language @code{sgml}. (X-Symbol can handle more then token -language @code{tex}.) - -@item -Input method Aggressive Context (precursor of input method Electric), -input method Context has been much improved. - -@item -Fixed performance bug when saving a file with package @code{crypt}. - -@item -Control of Conversion and 8bit character has changed. -@end itemize - -Version 2.3 has been released on Sep 1996. - -@itemize @bullet -@item -Distributed with own font for more math characters. - -@item -Info for the character around point in echo area. -@end itemize - -Version 2.2 has been released on June 1996. - -@itemize @bullet -@item -Input method Grid. Help when using input method Keyboard. - -@item -Control of Conversion and 8bit character has changed. -@end itemize - -Version 2.1 has been released on April 1996. - -@itemize @bullet -@item -Fixed serious performance bug when loading files with -font-lock/lazy-lock. Use executables for conversion of large buffers. - -@item -The package @code{iso-cvt} is not integrated anymore. Now this package -can also convert to/from Latin-1 characters, it is much faster. - -@item -Menu support, including input method Menu. - -@item -@code{isearch} works with X-Symbol characters. - -@item -First multi-file version. -@end itemize - -Version 1.4 has been released on Feb 1996. - -@itemize @bullet -@item -Provide some kind of ``poor man's Mule'' to remove most Nomule-Problems. -@end itemize - -Version 1.3 has been released on Jan 1996. - -@itemize @bullet -@item -Input method Abbrev (precursor of input method Token). - -@item -Super-/subscript support. -@end itemize - -Version 1.2 has been released on Jan 1996. It was the first release. - -@itemize @bullet -@item -Conversion between characters and @TeX{} tokens. Do so automatically -when visiting a file and saving the buffer. - -@item -Input method Keyboard. -@end itemize - -@c ==================================================================== - -@node Wishlist, Open Questions, News, History -@comment node-name, next, previous, up -@section Wishlist: Projects for X-Symbol -@cindex Wishlist -@cindex Project -@cindex Future Features -@cindex Contributions -@cindex Your Contribution - -You are encouraged to try to provide a solution to one of the problems -of this section. In fact, it is quite unlikely that I do it myself -without any contributions from you, see also @ref{Open Questions}. - -Providing a solution to these problems is the second way of making your -name appear in @ref{Acknowledgments}. - -@menu -* Wishlist Languages:: Additional token languages. -* Wishlist Fonts:: Automatically generated fonts. -* Wishlist Emacs:: Changes in Emacs/XEmacs. -* Wishlist LaTeX:: Changes in La@TeX{}. -* Wishlist Various:: Other changes. -* Wishlist Rejected:: Rejected Suggestions for X-Symbol. -@end menu - - - -@node Wishlist Languages, Wishlist Fonts, Wishlist, Wishlist -@comment node-name, next, previous, up -@subsection Wishlist: Additional Token Languages -@cindex More Token Languages -@cindex Language Additions -@cindex Ams@TeX{} -@cindex IPA Fonts - -Making a contribution here would require just a basic knowledge of Emacs -and X-Symbol. In fact, I would do the non-trivial part of the Elisp -part (@pxref{Extending X-Symbol}) for general-interest token languages -(e.g., Ams@TeX{}). - -It is likely that this would require additional fonts: available fonts -(e.g., IPA font), hand-crafted, or generated (@pxref{Wishlist -Fonts}). - - -@node Wishlist Fonts, Wishlist Emacs, Wishlist Languages, Wishlist -@comment node-name, next, previous, up -@subsection Wishlist: Generated Fonts -@cindex Generated Fonts -@cindex Fonts from Other Sources -@cindex Fonts for Windows -@cindex MS-Windows Fonts -@cindex Windows Fonts - -@pindex bdftofon -One direction of font generation would be from @file{.bdf} or -@file{.pcf} font files to Windows fonts to get rid of the limited -support for XEmacs on Windows (@pxref{Requirements}). If you have -successfully converted X-Symbol's fonts from the Unix format to the -Windows format (via @code{bdftofon} or whatever) or if you have free -and real Latin-N fonts for Windows, please @emph{let me know}! I -would also appreciate if you would actively try to get those missing -Windows fonts. - -Solofo Ramangalahy suggests to automatically generate the @file{.bdf} -fonts from other sources. This would have various advantages: - -@itemize @bullet -@item -We could easily create different sizes for our symbol font. - -@item -It would be quite simple to create a @file{.bdf} font for Ams@TeX{} -macros, calligraphical letters etc, which would be displayed as X-Symbol -characters by package X-Symbol. - -@item -We could easily create different sizes for our symbol font. -@end itemize - -Solofo has worked on Postscript fonts. Although the results are good -for big sizes, this cannot replace bdf fonts for ``small'' sizes like -14. Besides, the X font server is not very good for postscript fonts -(compared with ATM where you have anti-aliasing for example). Now that -XEmacs run under Windows, it may be that the result is better under -Windows than under Unix. This has not been tested. - -An other possibility is to use true type fonts as true type font servers -can achieve better results with good hinted fonts. This has not been -done yet. - -There are also some problems which are not optimally solved in the current -xsymb font either: - -@itemize @bullet -@item -Different @TeX{} macros (same appearance, different @TeX{} class = -different spacing) use the same MetaFont character, e.g., @code{\dagger} -and @code{\dag}. Therefore, we need different X11 characters for them. - -@item -Some Ascii characters have a special meaning in @TeX{}. The -corresponding MetaFont character is therefore produced by a TeX macro, -e.g., @samp{@{} by @code{\@{}. We need a X11 character which looks -similar to the character but not exactly like it. -@end itemize - -We could ask the question whether we should really distinguish the -characters by appearance@dots{}we have the minibuffer info for the -X-Symbol character anyway@dots{}. Here are the options: - -@itemize @minus -@item -distinguished by size/underlining/miscellaneous (currently used), -@item -distinguished by different spacing (my current favorite), -@item -not distinguished -@end itemize - -Solofo Ramangalahy originally though of generating the @file{.bdf} fonts -out of @TeX{} fonts (@file{.mf}, @file{.pk}) by @code{mftobdf} of -See@TeX{}, which can be found at @file{@var{ctan}/dviware/seetex/} among -others distributions having this tool. He dropped this idea for the -following reason: - -@quotation -The created fonts need some correction by hand, since it's difficult to -make good fonts at small size. MF fonts were created to be printed at -high resolutions (in the MetaFont book, cheapo is 200 pixel per inch, -resolution of screens are around 100 pixel per inch). The parameters -@samp{blacker}, @samp{fillin} and @samp{o_correction} are not sufficient -for tuning the computer modern fonts at low resolutions (they will not -do the job of hints of a postscript font). -@end quotation - -@node Wishlist Emacs, Wishlist LaTeX, Wishlist Fonts, Wishlist -@comment node-name, next, previous, up -@subsection Wishlist: Changes in Emacs/XEmacs -@cindex Emacs Changes -@cindex XEmacs Changes -@cindex Changes in Emacs -@cindex Changes in XEmacs - -Changes in Emacs and/or XEmacs would improve package X-Symbol, too: - -@itemize @bullet -@item -In Emacs: a package system similar to XEmacs' one. The installation -would be easier. - -@item -@pindex ispell -The package @code{ispell} assumes the buffer contents to be the same as -the file contents and does not provide any hook to fix this. This -should be fixed in @code{ispell}, @ref{Miscellaneous Packages}. - -@item -@pindex vc -Some versions control commands turn off @code{font-lock}. This should -be changed. - -@item -Provide a face property @code{raise}: we wouldn't need extra fonts for -super- and subscripts. Emacs: it's already a display property, make it -a face property, too (or make @code{font-lock} set properties other than -faces). XEmacs: no such property, yet. - -@item -@vindex after-insert-file-functions -In XEmacs, fixed in 21.X. In @code{after-insert-file-functions}, there -should be a possibility to get to know the start position of the region -which is inserted. If @code{insert-file-contents} is called with -argument @code{replace} being non-@code{nil}, it is not always point. - -@item -@vindex write-region-annotate-functions -Partly fixed in Emacs-21.3. Make possibility to change buffers in -@code{write-region-annotate-functions} official, see @ref{Alt Auto -Conversion}, have a way to get the original buffer. - -@item -Since @code{font-lock} uses duplicable text properties in some cases, I -need a function like @code{insert-buffer-substring-without-extents}. -(Currently, I remove the extents afterwards, which looks slow for me.) - -@item -@vindex post-command-hook -In XEmacs. Run hooks in @code{post-command-hook} even if command exits -with an error or quit (as it is in Emacs) or having some -@code{post-error-or-quit-hook}. @xref{Nomule Problems}. - -@item -In XEmacs. There are some bugs in package @code{custom}/@code{widget} -(XEmacs-21.0-b59) which are visible during the customization of -X-Symbol. - -@end itemize - - -@node Wishlist LaTeX, Wishlist Various, Wishlist Emacs, Wishlist -@comment node-name, next, previous, up -@subsection Wishlist: Changes in La@TeX{} -@cindex La@TeX{} Changes -@cindex Changes in La@TeX{} -@cindex @file{inputenc.sty} Changes -@pindex @file{inputenc.sty} - -Changes in La@TeX{}, especially @file{inputenc.sty}, would improve package -X-Symbol, too: - -@itemize @bullet -@item -To make the definition of the character U00B5 consistent with Unicode, -@file{inputenc.sty} should define the character to stand not for the -token @code{\mu} (U03BC is the right character), but for an extra token, -e.g., something like @code{\textmicro}. X-Symbol uses @code{\mathmicro} -here in order to avoid changing @code{\mu} to the character U00B5 if you -have chosen to store 8bit characters. -@c X-Symbol should not define it as \textmicro because then there would -@c be a major difference between `x-symbol-8bits' nil and non-nil. - -@item -Use same encoding for both text and math, i.e. use @code{periodcentered} -for both @code{\textperiodcentered} (the default) and @code{\cdot}. At -least provide text-and-math versions for characters where no alternative -is more obvious than the other. If that is not possible, always choose -text mode except for @code{\lnot}, @code{\pm}, @code{\times} and -@code{\division}: use -@code{\textonesuperior} for U00B9, \texttwosuperior for U00B2, and -@code{\textthreesuperior} for U00B3. - -@item -The @TeX{} macros @code{\textcent}, @code{\textcurrency}, -@code{\textbrokenbar}, @code{\textyen} are defined as not available with -OT1 and T1 font encoding. This should be changed. -@end itemize - - -@node Wishlist Various, Wishlist Rejected, Wishlist LaTeX, Wishlist -@comment node-name, next, previous, up -@subsection Various Projects for X-Symbol - -The following suggestions seem to be useful, though not essential: - -@itemize @bullet -@item -@cindex Print Buffer -@cindex Buffer Printing -@pindex ps-print -It would be nice if we could print the buffer contents. Currently, you -see strange characters instead X-Symbol's own characters. - -Printing non-standard fonts is only possible via the Emacs package -@code{ps-print}. A newer version of @code{ps-print} might be probably -already capable of doing it. Thus, you are encouraged to help the -XEmacs team updating this package. -@end itemize - - -@node Wishlist Rejected, , Wishlist Various, Wishlist -@comment node-name, next, previous, up -@subsection Rejected Suggestions for X-Symbol -@cindex Rejected Suggestions - -The following suggestions seem to be not useful enough to be worth the -additional effort and increased package size. I might be convinced -otherwise by patches (i.e., code, not text), though: - -@itemize @bullet -@item -@cindex Input Method Token -It would be nice if X-Symbol would replace the token with the last -character of the token if this is possible (@pxref{Input Method Token}), -not just with the next character. Well, during typing, this is not -really annoying and after a while, you will use input method Token only -for very short tokens. -@end itemize - -@c =========================================================================== - -@node Open Questions, Acknowledgments, Wishlist, History -@comment node-name, next, previous, up -@section Open Questions -@cindex Open Questions -@cindex Various Questions -@cindex Questions I Have - -This section lists some minor open questions. - -@itemize @bullet -@item -@findex x-symbol-initialize -@cindex Auto Initialization -Loading file @file{x-symbol.el} will initialize package X-Symbol (via -function @code{x-symbol-initialize}), since all functions will need the -initialization. In my opinion, this is no problem, since all -customization options are defined an other files which do not require -file @file{x-symbol.el}. Thus, customizing package X-Symbol will not -initialize package X-Symbol. - -The alternative would be to call function @code{x-symbol-initialize} in -every function which can be autoloaded. This seems quite tedious to -me. Also, I do not see a reason not to call @code{x-symbol-initialize} -top-level in file @file{x-symbol.el}. If I am wrong here, please let me -know (with an explanation). Batch-compilation might be an issue@dots{} - -@item -@pindex crypt -@vindex x-symbol-auto-conversion-method -When is necessary to set @code{x-symbol-auto-conversion-method} to -@code{slowest}? Of course, it is only necessary when using -@code{crypt}. Is the other necessary condition to use the computer pool -of the University of Edinburgh? -@end itemize - -@c =========================================================================== - -@node Acknowledgments, , Open Questions, History -@comment node-name, next, previous, up -@section Acknowledgments -@cindex Acknowledgments -@cindex Contributions -@cindex Marlet, Renaud -@cindex Bradfield, Julien -@pindex math-mode -@cindex Adobe -@pindex frame-icon -@cindex Thanks - -Stefan Monnier did many of the changes necessary for porting X-Symbol to -Emacs-21. Fortunately, he not only changed X-Symbol to use a quite -different API on Emacs for things like charsets and menus, he also made -the necessary changes in Emacs itself. Before that, Sang-Min Lee -started porting X-Symbol to Emacs-20.4, which was important for moving -the status of the Emacs port of X-Symbol from ``todo'' to ``in work''. - -David Kastrup demonstrated that the old way of encoding characters to -@TeX{} macros generally inhibited ligatures and kerns, i.e., it was -worse than expected. He also discussed the details of how to do the -encoding and decoding right. Christophe Raffalli suggested to use a -decode method which can be used for a larger class of token languages. -He also proved that it is faster. - -Package @code{math-mode} by Renaud Marlet and the extension of it by -Julian Bradfield gave the basic idea for the following features: -supporting @TeX{}'s math macros, input methods token, context/electric, -super-/subscript support. The shell script @code{makesub} is a merge -and change of the scripts @code{makesupers} and @code{makesub} by -Julian. - -The font @samp{xsymb0}, which is distributed with this package, is a -minor modification (appearance) of the Adobe symbol font, thanks to its -non-restrictive copyright. You may use the Adobe font instead. The -special images are from package @code{frame-icon}. - -The idea for Help during an X-Symbol key sequence is from package -@code{x-compose}. The general idea for showing some info in the echo -area is from package @code{eldoc}. The trick which stops -@code{expand-abbrev} is from package @code{mail-abbrevs}. The idea for -@code{x-symbol-image-cache-directories} is from package -@code{fast-lock}. The code for image command parsing is influenced by -some code in package @code{font-lock}. The code around -@code{x-symbol-image-delete-extents} is based on some code in package -@code{bib-cite}. - -@i{Thanks for patches/reports/suggestions to}: Vladimir Alexiev, David -Aspinall, Masayuki Ataka, Neal Becker, Matthias Berberich, Stefano -Bianchi, Janusz S. Bien, Uwe Brauer, Alastair Burt, John Collins, -Laurent Descamps, Frederic Devernay, Carsten Dominik, Steve Dunham, -Michael Ebner, Stephen Eglen, Paul Furnanz, Jeffrey Grandy, Clemens -Gr@"opl, Kenichi Handa, Meik Hellmund, Ryurick M. Hristev, Adriaan -Joubert, Marcin Kasperski, David Kastrup, Richard Ketchersid, Thomas -Kleymann, Ekkehard Koehler, Fred Labrosse, Jan-Ake Larsson, Bernhard -Lehner, Stefan Monnier, Harald Muehlboeck, Karsten Muehlmann, Jakub -Narebski, Peter M@o{}ller Neergaard, Raymond Nijssen, David von Oheimb, -Alex Ott, Sudeep Kumar Palat, Arshak Petrosyan, Jim Radford, Christophe -Raffalli, Solofo Ramangalahy, Marciano Siniscalchi, Richard M. Stallman, -Alex Russell, Eli Tziperman, Jan Vroonhof, Markus Wenzel, Sabine Wetzel, -Pierre-Henri Wuillemin, Roland Zumkeller, Marco Zunino, Gerard Zwaan. - -@i{Thanks for general information to:} Per Abrahamsen, Steve L. Baur, -Kenichi Handa, David Kastrup, Gerd Moellmann, Stefan Monnier, Primoz -Peterlin, Martin Ramsch, Peter Schmitt, Toby Speight, Jan Vroonhof, Eli -Zaretskii. - -I made use of information from the following URLs: - -@display - @url{http://www.w3.org/TR/REC-html40/sgml/entities.html} - @url{http://www.fmi.uni-passau.de/~ramsch/iso8859-1.html} - @url{http://czyborra.com/charsets/iso8859.html} - @url{http://www.bbsinc.com/iso8859.html} - @url{http://www.bbsinc.com/iso8879.html} - @url{http://ppewww.ph.gla.ac.uk/~flavell/charset/internat.html} - @url{http://ppewww.ph.gla.ac.uk/~flavell/iso8859/iso8859-pointers.html} - @url{http://sizif.mf.uni-lj.si/linux/cee/iso8859-2.html} -@end display - -I do not intend to update this list in the future---this is just an -"Acknowledgment" section. - - -@node Indexes, , History, Top -@comment node-name, next, previous, up@unnumbered Indexes -@unnumbered Indexes - -You should consult the following indexes if you are interested in a -specific feature or aspect of package X-Symbol. You should also consult -them before sending a report to the maintainer (@pxref{Bug Reports}), - -@menu -* Key Index:: Key sequences. -* Program Index:: Programs and Emacs packages. -* Variable Index:: Commands, functions, variables. -* Concept Index:: Various topics. -@end menu - -The links lead you to the manual sections describing X-Symbol's commands -and variables. @xref{About}. - -@comment workaround for bug with the length of the lists -@iftex -@vskip 6ex plus 1ex minus 4ex -@end iftex - -@node Key Index, Program Index, Indexes, Indexes -@comment node-name, next, previous, up -@unnumberedsec Key Index -@printindex ky - -@comment workaround for bug with the length of the lists -@iftex -@page -@end iftex - -@node Program Index, Variable Index, Key Index, Indexes -@comment node-name, next, previous, up -@unnumberedsec Program and Package Index -@printindex pg - -@comment workaround for bug with the length of the lists -@iftex -@page -@end iftex - -@node Variable Index, Concept Index, Program Index, Indexes -@comment node-name, next, previous, up -@unnumberedsec Command, Function and Variable Index -@printindex vr - -@comment workaround for bug with the length of the lists -@iftex -@page -@end iftex -@node Concept Index, , Variable Index, Indexes -@comment node-name, next, previous, up -@unnumberedsec Concept Index -@printindex cp - -@contents -@bye -@c Local IspellPersDict: .ispell_xsymb diff --git a/x-symbol/man/x-symbol.texi.2 b/x-symbol/man/x-symbol.texi.2 deleted file mode 100644 index f23dcbfb..00000000 --- a/x-symbol/man/x-symbol.texi.2 +++ /dev/null @@ -1,7476 +0,0 @@ -\input texinfo -@c Copyright (C) 1998-2003 Free Software Foundation, Inc. -@c -@c Author: Christoph Wedler <wedler@users.sourceforge.net> -@c Maintainer: (Please use `M-x x-symbol-package-bug' to contact the maintainer) -@c Keywords: WYSIWYG, LaTeX, HTML, wp, math, internationalization -@c X-URL: http://x-symbol.sourceforge.net/ - -@c %**start of header -@setfilename x-symbol.info -@settitle X-Symbol Manual -@setchapternewpage odd - -@set edition 4.5 -@set version 4.5 -@set update January 2003 -@set http http://x-symbol.sourceforge.net -@set maintainer wedler@@users.sourceforge.net - -@c for cross references to other manuals -@ifset GNU -@set subedition Emacs -@set emacs emacs -@set emacsman GNU Emacs Manual -@end ifset - -@ifclear GNU -@set subedition XEmacs -@set emacs xemacs -@set emacsman XEmacs User's Manual -@end ifclear - -@set auctex auctex -@set auctexman AUCTeX - -@set reftex reftex -@set reftexman RefTeX User Manual - -@set kpathsea kpathsea -@set kpathseaman Kpathsea Manual - - -@syncodeindex fn vr -@c %**end of header -@dircategory Editors -@direntry -* X-Symbol:: Semi WYSIWYG for LaTeX, HTML and other "token languages" -@end direntry - -@ifinfo -This file documents X-Symbol, a package providing semi-@sc{wysiwyg} for -La@TeX{}, HTML and other ``token languages''. It uses additional fonts -and provide input methods to insert their characters into your document. - -This is Edition @value{edition} (@value{subedition}) of the X-Symbol -Manual for X-Symbol @value{version}, @value{update}. - -Copyright (c) 1998-2003 Free Software Foundation, Inc. - -@c default -Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - -@ignore -Permission is granted to process this file through TeX and print the -results, provided the printed document carries a copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). - -@end ignore -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that the -sections entitled ``Copying'' and ``GNU General Public License'' are -included exactly as in the original, and provided that the entire -resulting derived work is distributed under the terms of a permission -notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation -approved by the Free Software Foundation. -@c end default -@end ifinfo - -@finalout -@titlepage -@title X-Symbol Manual -@subtitle Semi-@sc{wysiwyg} for La@TeX{}, HTML and other ``token languages'' -@subtitle Edition @value{edition} (@value{subedition}), for X-Symbol @value{version}, @value{update} -@author by Christoph Wedler - -@page -@vskip 0pt plus 1filll -Copyright @copyright{} 1998-2003 Free Software Foundation, Inc. - -@c default (slight change) -Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the -entire resulting derive work is distributed under the terms of a -permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation -approved by the Free Software Foundation. -@c end default - -@end titlepage - -@c =========================================================================== - -@ifinfo -@node Top, Introduction, (dir), (dir) -@comment node-name, next, previous, up -@top X-Symbol - -When you edit La@TeX{}, HTML, BibTeX or @TeX{}info sources in Emacs, -package X-Symbol provides some kind of @sc{wysiwyg} by using real -characters for tokens like @code{\oplus} or @code{™}. It also -provides various input methods to insert these characters. Thumbnails -for included images and real super-/subscripts and are also supported. - -The first part of this master menu lists the major nodes in this Info -document, including the indexes. The rest of the menu lists all the -lower level nodes in the document. - -This is Edition @value{edition} of the X-Symbol Manual for X-Symbol -@value{version}, @value{update}. For recent changes, see @ref{News}. - -Bug fixes, bug reports, improvements, and suggestions are strongly -appreciated. Please read section @ref{Bug Reports} if you want to -contact the maintainer of package X-Symbol. -@end ifinfo - -@menu -* Introduction:: Introduction to X-Symbol. -* Installation:: What to do before using package X-Symbol. -* Concepts:: Token language, conversion, coding, etc. -* Input Methods:: How to insert X-Symbol characters. -* Features:: Super-/subscripts, images, info, etc. -* Supported Languages:: Details of the predefined token languages. -* X-Symbol Internals:: How package X-Symbol works. -* Problems:: Annoyances, contacting the maintainer. -* History:: Changes, wishlist, projects. -* Indexes:: Menus covering various topics. - -@detailmenu - --- The Detailed Node Listing --- - -Introduction - -* Copying:: X-Symbol is GPL'd. -* Summary:: A brief summary of package X-Symbol. -* About:: About this manual. - -Installation - -* Requirements:: Which programs you need for X-Symbol. -* Installing Files:: Basics 1: Put the files into your home dir. -* System-wide Installation:: Alternative: Put the files into the XEmacs dir. -* Installing Lisp:: Basics 2: Initialize X-Symbol during startup. -* Installing Image Converter:: Recommended: How to install @code{convert}. -* Package Integration:: How X-Symbol interacts with other packages. -* Installing Fonts:: Optional: What to do when using other fonts. -* Installing Fonts Exceed:: If appropriate: What to do when using Exceed. -* Installing Fonts Lisp:: If appropriate: Lisp coding for other fonts. -* Installing Manual:: Optional: How to create the manual. -* Checking Installation:: Is package X-Symbol completely installed? - -Package Integration - -* LaTeX Packages:: Packages used in La@TeX{} buffers. -* Syntax Hiliting Packages:: Package @code{font-lock} and support modes. -* File IO Packages:: Compression, encryption, remote files, etc. -* Miscellaneous Packages:: Other packages. - -Concepts of Package X-Symbol - -* Token Language:: What does a X-Symbol character represent. -* Conversion:: Decoding tokens, encoding characters. -* Minor Mode:: How to control the behavior of X-Symbol. -* Poor Mans Mule:: Running X-Symbol under XEmacs/no-Mule. -* Role of font-lock:: Why does X-Symbol need @code{font-lock}. -* Char Group:: Character group and token classes. - -Conversion: Decoding and Encoding - -* Default Coding:: Encoding of your default charset. -* File Coding:: Specific encoding of a file. -* Controlling 8bit Coding:: Do you want to store 8bit characters? -* Unique Decoding:: Restrict decoding to avoid normalization? -* Conversion Commands:: Interactive encoding and decoding. -* Copy with Conversion:: Copy & paste with conversion. -* Char Aliases:: Different charsets include the same chars. - -X-Symbol's Input Methods - -* Introducing Input Methods:: Common behavior of all input methods. -* Input Method Token:: Replace token by character. -* Input Method Read Token:: Minibuffer input with completion. -* Input Method Menu:: Select a menu item. -* Input Method Grid:: Choose highlighted character. -* Input Method Keyboard:: Compose a key sequence. -* Input Method Context:: Replace character sequence. -* Input Method Electric:: Automatically replace character sequence. -* Input Method Quail:: A Mule input method "x-symbol". -* Customizing Input Method:: How to customize the input methods. - -Features of Package X-Symbol - -* Super and Subscripts:: Use special fonts for super-/subscripts. -* Images:: Images after image insertion commands. -* Info:: Display information in echo area. -* Ascii Representation:: Derive label from a buffer contents. -* Package Information:: Invoke info system, use WWW browser. - -Images at the end of Image Insertion Commands - -* Image Display:: When to display images. -* Image Conversion:: Producing a scaled-down image. -* Image Caching:: Speeding up the image processing. -* Special Images:: Signaling specific situations. -* Image Editor:: Editing the original image file. - -Supported Token Languages - -* Pseudo Language:: Token language ``x-symbol charsym''. -* TeX Macro:: Token language @code{tex}. -* SGML Entity:: Token language @code{sgml}. -* BibTeX Macro:: Token language @code{bib}. -* TeXinfo Command:: Token language @code{texi}. -* External Languages:: Languages defined in other Emacs Packages. - -Token Language ``@TeX{} macro'' (@code{tex}) - -* TeX Macro Basics:: Basics of language ``@TeX{} macro''. -* TeX Macro Features:: Super-/subscripts and images in La@TeX{}. -* TeX Macro Problems:: Problems with @TeX{} macros. -* TeX Macro Conversion:: How the conversion of @TeX{} macros works. -* TeX Macro Symbols:: Extra Symbols of Language ``@TeX{} Macro''. - -Token Language ``@sc{sgml} entity'' (@code{sgml}) - -* SGML Entity Basics:: Basics of Language ``@sc{sgml} entity''. -* SGML Entity Features:: Super-/Subscripts and Images in @sc{html}. -* SGML Entity Conversion:: How the conversion of @sc{sgml} entities works. - -X-Symbol Internals - -* Char Representation:: How X-Symbol represents X-Symbol chars. -* Defining Charsets:: How X-Symbol defines additional chars. -* Defining Input Methods:: How X-Symbol defines the input methods. -* Extending X-Symbol:: How to add fonts and token languages. -* Various Internals:: How X-Symbol handles other aspects. -* Design Alternatives:: Why X-Symbol is not designed differently. -* Language Internals:: How X-Symbol handles languages. -* Misc Internals:: Various. TODO. - -Defining Input Methods - -* Input Method Objectives:: Input methods should be intuitive/consistent. -* Intro Char Descriptions:: An example introducing char descriptions. -* Char Descriptions:: The aspects and the contexts of a character. -* Example Char Descriptions:: A complete example defining input methods. -* Customizing Input Methods:: How to customize the input methods. - -Extending Package X-Symbol - -* Extending with Fonts:: How to add fonts to X-Symbol. -* Input Definitions:: Guidelines for input definitions. -* Font Definition File:: How to define new character in a file. -* Language Extension File:: Extending an existing language. -* Language Definition File:: Defining a new language. - -Various Internals - -* Tagging Insert Commands:: Don't break input methods Token and Electric. -* Avoiding Flickering:: Moving cursor in invisible commands. - -Design Alternatives - -* Alt Token Representations:: Why we need the conversion. -* Alt Global Mode:: How to turn on X-Symbol globally. -* Alt Auto Conversion:: When do we convert automatically. - -Problems, Troubleshooting - -* Nomule Problems:: X-Symbol provides a @emph{poor} man's Mule. -* Spurious Encodings:: Some commands turn off X-Symbol mode. -* No Encoding:: The encoding does not work in a rare case. -* FAQ:: Frequently asked questions. -* Bug Reports:: How to contact the maintainer of X-Symbol. - -Frequently Asked Questions - -* FAQ XEmacs Core:: XEmacs crashes when using input method Token -* FAQ font-lock:: X-Symbol's fontification does not work. -* FAQ Strange Chars:: The buffer contains strange characters -* FAQ No Subscripts:: I cannot see any/some super-/subscripts. -* FAQ Stupid Subscripts:: I see subscripts where I don't want them. -* FAQ Font Size:: The characters are too small or too big. -* FAQ Conversion:: The conversion changes some tokens. -* FAQ Additional Spaces:: A space is added during the encoding. -* FAQ 8bit Chars:: I do not want 8bit characters in the file. -* FAQ Hyphen:: I cannot distinguish @code{hyphen} from @samp{-}. -* FAQ Spell Check:: I have problems with spell-checking. - -History and Projects - -* News:: Changes in recent versions. -* Emacs Version:: Beta Version which Works with Emacs -* Wishlist:: Projects for X-Symbol. -* Open Questions:: How you can contribute. -* Acknowledgments:: People having contributed. - -News: Changes in Recent Versions of X-Symbol - -* Changes New:: To be announced. -* Changes 4.4:: Released June 2002 as beta. -* Changes 4.1:: Released Mar 2002 as beta. -* Changes 3.4:: Released Mar 2002. -* Changes 3.3:: Released Jan 1999. -* Changes 3.2:: Released Dec 1998. -* Changes 3.1:: Released Oct 1998. -* Changes 3.0:: Released Sep 1998 as beta. -* Changes Old:: Overview of old releases. - -Wishlist: Projects for X-Symbol - -* Wishlist Languages:: Additional token languages. -* Wishlist Fonts:: Automatically generated fonts. -* Wishlist Emacs:: Changes in Emacs/XEmacs. -* Wishlist LaTeX:: Changes in La@TeX{}. -* Wishlist Various:: Other changes. -* Wishlist Rejected:: Rejected Suggestions for X-Symbol. - -Indexes - -* Key Index:: Key sequences. -* Program Index:: Programs and Emacs packages. -* Variable Index:: Commands, functions, variables. -* Concept Index:: Various topics. - -@end detailmenu -@end menu - -@c =========================================================================== - -@node Introduction, Installation, Top, Top -@comment node-name, next, previous, up -@chapter Introduction -@cindex Overview -@cindex Introduction - -When you edit La@TeX{}, HTML, BibTeX or @TeX{}info sources in Emacs, -package X-Symbol provides some kind of @sc{wysiwyg} by using real -characters for tokens like @code{\oplus} or @code{™}. It also -provides various input methods to insert these characters. Thumbnails -for included images and real super-/subscripts and are also supported. - -@menu -* Copying:: X-Symbol is GPL'd. -* Summary:: A brief summary of package X-Symbol. -* About:: About this manual. -@end menu - -@c ==================================================================== - -@node Copying, Summary, Introduction, Introduction -@comment node-name, next, previous, up -@section X-Symbol's Copying Conditions: GPL -@cindex Copying -@cindex Copyright -@cindex GPL -@cindex General Public License -@cindex License -@cindex Warranty - -(This text is stolen from the @TeX{}info manual, Edition 4.0). - -The programs currently being distributed that relate to X-Symbol include -Emacs lisp files and X11 font files. These programs are @dfn{free}; -this means that everyone is free to use them and free to redistribute -them on a free basis. The X-Symbol related programs are not in the -public domain; they are copyrighted and there are restrictions on their -distribution, but these restrictions are designed to permit everything -that a good cooperating citizen would want to do. What is not allowed -is to try to prevent others from further sharing any version of these -programs that they might get from you. - -Specifically, we want to make sure that you have the right to give away -copies of the programs that relate to X-Symbol, that you receive source -code or else can get it if you want it, that you can change these -programs or use pieces of them in new free programs, and that you know -you can do these things. - -To make sure that everyone has such rights, we have to forbid you to -deprive anyone else of these rights. For example, if you distribute -copies of the X-Symbol related programs, you must give the recipients -all the rights that you have. You must make sure that they, too, -receive or can get the source code. And you must tell them their -rights. - -Also, for our own protection, we must make certain that everyone finds -out that there is no warranty for the programs that relate to X-Symbol. -If these programs are modified by someone else and passed on, we want -their recipients to know that what they have is not what we distributed, -so that any problems introduced by others will not reflect on our -reputation. - -The precise conditions of the licenses for the programs currently being -distributed that relate to X-Symbol are found in the General Public -Licenses that accompany them. - -@c ==================================================================== - -@node Summary, About, Copying, Introduction -@comment node-name, next, previous, up -@section Brief Summary of X-Symbol -@cindex Summary -@cindex Brief Summary -@cindex X-Symbol in a Nutshell - -@itemize @bullet -@item -X-Symbol provides a @strong{minor mode} which make use of characters in -the Latin-1, Latin-2, Latin-3, Latin-5, and Latin-9 font (179 chars + -294 char aliases), the Adobe symbol font (109 chars) and the xsymb1 font -(165 chars, distributed with the package). Additional fonts could be -used easily. - -@item -These characters are used in the buffer to represent @strong{tokens} -(e.g., @TeX{} macros, @sc{sgml} entities, more ``token languages'' could be -added easily) in the file. The @emph{conversion} is done automatically -when visiting the file, saving the buffer and turning the minor mode -on/off. - -@item -Defines 8 @strong{input methods} for these characters: @emph{Menu}, -@emph{Grid} (selecting a character with the mouse), @emph{Keyboard}, -@emph{Context} (replace/modify similar-looking char sequence), -@emph{Electric} (automatic replace), @emph{Quail} (a Mule input method), -@emph{Token} (replace token by corresponding char), @emph{Read Token} -(completing minibuffer input of token). - -@item -Offers some @strong{info} in the echo area for these characters (e.g., -that the character under point represents the TeX macro @code{\leadsto} -and that the macro is defined in La@TeX{} package @file{latexsym.sty}). - -@item -Allows to use a @strong{8bit file encoding} which is different from your -"normal" 8bit file encoding, e.g., you can visit @TeX{} files with -@code{\usepackage[latin5]@{inputenc@}} even if you normally use a Latin-2 -font. - -@item -Provides a kind of ``@strong{poor man's Mule}'' when running on an -XEmacs without Mule support: it can @emph{display} more than 256 -characters via @code{font-lock} and removes most annoyances resulting -from the fact that, without Mule support, many ``X-Symbol characters'' -are actually a sequence of two chars. - -@item -Provides fonts for single-line innermost @strong{super-} and -@strong{subscripts} to be displayed with per-buffer control. The -invisible part, like @code{<sub>} in HTML, is revealed at point. - -@item -Displays thumbnails for @strong{images} at the end of image insertion -commands with per-buffer control (e.g., -@code{\includegraphics@{@var{file}@}} in La@TeX{}, @code{<img -src=@var{file}>} in HTML). They show a scaled-down version of the -included image files (using @code{convert} from -@uref{http://www.imagemagick.org/,ImageMagick}). A single mouse click -on the image or command invokes the image editor for the corresponding -image file. - -@item -It @emph{does not} and @emph{will not} provide commands to hide (more or -less) uninteresting parts of your document or fontify them differently. -This is more the task of the corresponding major mode or -@code{font-lock}, e.g., @code{font-latex}. (I admit, the support of -super- and subscripts might let you think that this is a good point for -the todo list of package X-Symbol.) Using @code{outline-minor-mode} or -folding might also be an alternative. -@end itemize - -If you prefer a more @sc{wysiwyg}-like document processor, you should -probably use @code{LyX} or @code{GNU TeXmacs}. Here are some reasons -why you would use Emacs/XEmacs with package X-Symbol instead: - -@itemize @bullet -@item -You have complete control over the La@TeX{} source. X-Symbol supports -more characters. - -@item -You can read any La@TeX{} source and you write normal La@TeX{} code, -i.e., package X-Symbol does not use any special format. - -@item -It also supports HTML and @TeX{}info documents and BibTeX entries. - -@item -You can use your favorite editor, i.e., Emacs or XEmacs. -@end itemize - -@c ==================================================================== - -@node About, , Summary, Introduction -@comment node-name, next, previous, up -@section About this Manual -@cindex About -@cindex Web Pages -@cindex Info Pages -@cindex Manual -@cindex Online Help - -Apart from this manual, there are two other sources of information about -X-Symbol: - -@itemize @bullet -@item -The web pages of X-Symbol provide a summary of X-Symbol, including some -screen shots. You are strongly encouraged to read them carefully. They -probably provide enough info for the standard user and can be found at: - -@display - @uref{@value{http}/} -@end display - -@item -The online help for commands (functions) and user options (variables) is -quite technical. It is shown during customization and when using Emacs' -Help menu. -@end itemize - -This manual is somewhere in between: it more detailed than the web pages -and less technical than the online help. For example, when explaining -some functionality, it states the default behavior, gives an impression -of what can be customized, and it even lists all related user options, -but it does not describes the technical format of possible values of -each option. - -Section @ref{X-Symbol Internals} is for the curious reader and for -people who want to define their own token language. - -This manual does not explain Emacs in general or some optional programs -used by this package such as @code{convert} (used to produce the image -thumbnails). It also includes no installation instructions for those -programs and the author of this package will not help you with the -installation of those programs (sorry for that). - -You do not have to learn this manual by heart before sending a question -to the maintainer of X-Symbol, but you should give the impression that -your really have tried to find the necessary information yourself and -spend some time making your report precise. Before sending a problem -report, please read @ref{Bug Reports}. - -@c =========================================================================== - -@node Installation, Concepts, Introduction, Top -@comment node-name, next, previous, up -@chapter Installation -@cindex Installation - -The short version of the installation instructions for package X-Symbol -on XEmacs is: uncompress & extract the @emph{binary distribution} in -directory @file{~/.xemacs/xemacs-packages/}, add -@code{(x-symbol-initialize)} to your @file{~/.emacs} and install -ImageMagick for the image support (unless you want to get a warning). - -Please check the web page @emph{additionally} to the sections here for -the installation instructions for package X-Symbol on Emacs. - -The rest of this chapter contains the long version. I recommend that -you read this chapter completely after a short test of X-Symbol, -especially if you have customized your Emacs more or less heavily or if -you get some problems. - -@menu -* Requirements:: Which programs you need for X-Symbol. -* Installing Files:: Basics 1: Put the files into your home dir. -* System-wide Installation:: Alternative: Put the files into the XEmacs dir. -* Installing Lisp:: Basics 2: Initialize X-Symbol during startup. -* Installing Image Converter:: Recommended: How to install @code{convert}. -* Package Integration:: How X-Symbol interacts with other packages. -* Installing Fonts:: Optional: What to do when using other fonts. -* Installing Fonts Exceed:: If appropriate: What to do when using Exceed. -* Installing Fonts Lisp:: If appropriate: Lisp coding for other fonts. -* Installing Manual:: Optional: How to create the manual. -* Checking Installation:: Is package X-Symbol completely installed? -@end menu - -@c ==================================================================== - -@node Requirements, Installing Files, Installation, Installation -@comment node-name, next, previous, up -@section Requirements -@cindex Requirements -@cindex Binary Package -@cindex Source Package -@cindex Old Version -@pindex X -@pindex Windows/NT - -Package X-Symbol only works with Emacs-21.1 or higher (X-Symbol's -development version, only, @ref{Emacs Version}), and XEmacs 20.3 or -higher (XEmacs-21.1.9 is strongly recommended, @ref{FAQ XEmacs Core}), -with or without Mule support. - -Package X-Symbol works under X and tty (probably of limited use under -tty). It also works under Windows/NT with the following restrictions: -On XEmacs-21.4+, it just supports a @emph{limited number of characters} -(Latin-1 and half the math symbols), and @emph{no super- and subscripts} -due to missing MS-Windows fonts. @xref{Wishlist Fonts}. - -@pindex font-lock -@pindex lazy-shot -@pindex texmathp -@pindex auctex -This package require package @code{font-lock} (distributed with Emacs -and XEmacs), the use of package @code{lazy-shot} is recommended, see -@ref{Syntax Hiliting Packages}. - -@pindex convert -If you want to see the images at the end of image insertion commands, -install @code{convert} from -@uref{http://www.imagemagick.org/,ImageMagick}, -see @ref{Installing Image Converter}. They show a scaled-down version -of the included image files. - -@pindex makeinfo -@pindex texi2dvi -@pindex latex2html -If you want to produce the Info files yourself (they are included in the -binary distribution), you need @code{makeinfo}, Version 1.68 or higher. -If you want to produce a PS file from the manual, you need -@code{texi2dvi}. If you want to produce an HTML version of this manual, -you need @code{texi2html}, Version 1.62 or higher. @xref{Installing -Manual}. - -@c ==================================================================== - -@node Installing Files, System-wide Installation, Requirements, Installation -@comment node-name, next, previous, up -@section Put the Files into your Home Directory -@cindex Basic Installation -@cindex Uncompress Tarball -@cindex Extract Tarball -@cindex Tarball -@cindex Binary Distribution - -If you use Emacs, please check the @uref{@value{http}/news.html, web -pages of X-Symbol}. - -In this section, we assume that you want to install the binary -distribution (also called the binary tarball) of package X-Symbol in -your home directory. To install it somewhere below the XEmacs root (it -might be already there), see @ref{System-wide Installation}. If you use -the source distribution, you should know what do to instead. - -In directory @file{~/.xemacs/xemacs-packages/}, run -@example -zcat x-symbol-pkg.tar.gz | tar xvf - -@end example - -Remember that @code{tar} does not overwrite write-protected files. - -X-Symbol's @file{pcf} files and font directory must be world-readable -since you do not own the X11 font server process. You are on the safe -side, if you run -@example -chmod -R a+rx ~/.xemacs/xemacs-packages -@end example - -If package X-Symbol has been installed system-wide and you install a -newer version in your @file{~/.xemacs/xemacs-packages/}, you get a warning during -XEmacs' startup (autoload error: already loaded). You can safely ignore -this warning, but there is unfortunately no good way to get rid of it. -Yes, XEmacs' packaging system is excellent, but there is still a place -for improvements@dots{}. - -Before XEmacs-21.0: the user package directory was @file{~/.xemacs/} -instead of @file{~/.xemacs/packages/}; also: delete and recompile the -@file{.elc} files. - -@c ==================================================================== - -@node System-wide Installation, Installing Lisp, Installing Files, Installation -@comment node-name, next, previous, up -@section System-wide Installation: Put the Files into the XEmacs Directory -@cindex System-wide Installation -@cindex Installing System-wide -@cindex @file{default.el} -@cindex @file{site-start.el} - -You can skip this section if your have installed X-Symbol in your home -directory according to the previous section. - -If you install package X-Symbol system-wide, use @file{default.el} and -@file{@var{xemacs}/site-packages/} whenever @file{~/.emacs} and -@file{~/.xemacs/xemacs-packages/} are mentioned in the previous or -following subsections. @file{@var{xemacs}/site-packages/} is the -directory of independent packages for XEmacs. - -Under XEmacs-21, you can uncompress and extract the tarball by - -@example -M-x package-admin-add-binary-package @key{RET} @var{dir}/x-symbol-pkg.tar.gz -@end example - -Then, @file{@var{xemacs}/} is the default directory of buffer -@file{*Package Output*} (use @kbd{C-x C-f} in that buffer to see it). -It might be @file{/usr/local/lib/xemacs/xemacs-packages/} (the first -element in variable @code{late-packages}). - -Under XEmacs-20, @file{@var{xemacs}/} might be -@file{/usr/local/lib/xemacs-@var{version}/}. Here, you have to -uncompress and extract the tarball as described in @ref{Installing -Files}. You also have to load the autoload file explicitly by putting -the following line into file @file{site-start.el}: - -@lisp -(load "@var{xemacs}/lisp/x-symbol/auto-autoloads") -@end lisp - -I would appreciate if you would set the following variables: - -@vtable @code -@item x-symbol-installer-address -Please set this variable to your email address to catch problems which -could be solved locally. In your private @file{~/.emacs}, you might -want to set this variable to @code{nil}. - -@item x-symbol-package-url -If you have a local copy of the web pages (@pxref{Installing Manual}), set -this variable to the corresponding @sc{url}. -@end vtable - -@c ==================================================================== - -@node Installing Lisp, Installing Image Converter, System-wide Installation, Installation -@comment node-name, next, previous, up -@section Make XEmacs Initialize X-Symbol During Startup -@cindex Installing Lisp -@cindex Lisp Installation -@cindex Elisp Installation -@cindex @file{.emacs} -@findex x-symbol-initialize - -Put the following into your @file{~/.emacs} (or @file{~/.xemacs/init.el}): - -@lisp -(x-symbol-initialize) -@end lisp - -Basically, that's it! If you get a warning about X-Symbol not being -able to deduce a default encoding (or about limited support with XEmacs -on MS-Windows), check @ref{Default Coding}. If your XEmacs runs on a -different machine, check @ref{Installing Fonts}. - -If your tty console does not support Latin characters, there is no -reason to use package X-Symbol. In this case, use the following -instead: - -@lisp -(if (eq (console-type) 'x) (x-symbol-initialize)) -@end lisp - -The initialization can be controlled by the following variable: - -@vtable @code -@item x-symbol-initialize -By default, package X-Symbol does a full initialization. This includes -an integration with some packages, see also @ref{Package Integration}. -@end vtable - -If you use a B/W monitor and XEmacs/no-Mule, it might be necessary to -remove the font properties of any face which is used on regions with -X-Symbol characters: @code{isearch}, @code{highlight}, -@code{primary-selection}, @code{secondary-selection}, -@code{paren-match}, @code{paren-mismatch}, @code{paren-blink-off}, -@code{underline}. I.e., for each @var{face}, use: - -@lisp -(remove-specifier (get (get-face '@var{face}) 'font)) -@end lisp - -@c ==================================================================== - -@node Installing Image Converter, Package Integration, Installing Lisp, Installation -@comment node-name, next, previous, up -@section Installing the Image Converter from ImageMagick -@cindex Installing Image Converter -@cindex Installing @code{convert} -@cindex Image Converter Installation -@cindex @code{convert} Installation - -@pindex convert -Program @code{convert} from ImageMagick is used to display images at the -end of image insertion commands. The images show a scaled-down version -of the included image files. - -@vindex x-symbol-image-converter -While the installation of @code{convert} is optional, you get a warning -if @code{convert} is not found on your system or if there is no image -format supported by both @code{convert} and Emacs. Set variable -@code{x-symbol-image-converter} to @code{nil} if you don't want to get -the warning. - -@vindex x-symbol-image-convert-program -On Unix, @code{convert} must be in your @code{$PATH}. On MS-Windows, it -is assumed to be found at @file{C:\ImageMagick\convert}. If this is not -the case, you have to customize the variable -@code{x-symbol-image-convert-program}. - -Check @uref{http://www.imagemagick.org/} for the installation -instructions. Run @samp{convert -h} and @samp{convert -list Format} (in -newer versions of ImageMagick) in your shell to check whether the -installation of ImageMagick was successful. If you have problems, check -the ImageMagick web page for FAQs and mailing lists. -@comment ImageMagick-5.0..5.37 failed to show formats sometimes - -If you do not have a truecolor device (i.e., just 256 colors), package -X-Symbol uses @code{convert} with a colormap by default (@pxref{Image -Conversion}). You might create and use your own colormap instead. It -should be tuned to include the colors you use in Emacs anyway, i.e., the -face colors. - -@c ==================================================================== - -@node Package Integration, Installing Fonts, Installing Image Converter, Installation -@comment node-name, next, previous, up -@section Package Integration -@cindex Package Integration -@cindex Integrating Package -@cindex Other Packages - -You might skip this section when trying package X-Symbol the first time. -Nevertheless, I strongly recommend to read this section if you have -customized your Emacs more or less heavily or if you get some problems. - -Some features of X-Symbol work by hooking itself into existing functions -of Emacs or related packages via predefined hooks. A potential problem -arises if your customization or other packages use the same hooks, or if -other packages assume these hooks not to be used, e.g., some packages -assume the buffer contents to contain the same characters as the -corresponding file. - -This section lists some special adaptation for other packages -(everything is fine if you do not use these packages). It also lists -potential problems in combination with other packages. If you discover -some problems in combination with other packages, please let me know. - -@menu -* LaTeX Packages:: Packages used in La@TeX{} buffers. -* Syntax Hiliting Packages:: Package @code{font-lock} and support modes. -* File IO Packages:: Compression, encryption, remote files, etc. -* Miscellaneous Packages:: Other packages. -@end menu - - -@node LaTeX Packages, Syntax Hiliting Packages, Package Integration, Package Integration -@comment node-name, next, previous, up -@subsection La@TeX{} Packages -@cindex La@TeX{} Packages -@cindex Integrating La@TeX{} Packages - -Objectives: relate positions in buffer to positions in file, do -conversion in master/slave buffers, preserve highlighting, improve input -methods and other things. - -@table @code -@item auctex -@pindex auctex -@pindex texmathp -@findex TeX-next-error -@vindex TeX-translate-location-hook -@findex x-symbol-tex-error-location -Use Version 9.9c or higher, which includes @code{texmathp}. There is -some special X-Symbol adaptation for Auc@TeX{}: - -@itemize @minus -@item -@vindex TeX-master -X-Symbol supports Auc@TeX{}'s multifile documents: it respects the -variable @code{TeX-master} when searching for the file encoding -(@pxref{File Coding}) and when converting image files with relative -names (@pxref{Image Display}). - -@item -@vindex TeX-region-hook -X-Symbol supports Auc@TeX{}'s region commands: it ensures that -characters in @file{_region_.tex} buffer are converted according to the -parent buffer. Initialization changes @code{TeX-region-hook}. Requires -Auc@TeX{}, v9.8a or higher. - -@item -X-Symbol's input method Electric (@pxref{Input Method Electric}) with -token language @code{tex} uses package @code{texmathp}. - -@item -@vindex LaTeX-math-insert-function -Auc@TeX{}'s math mode commands also inserts X-Symbol characters -(@pxref{Mathematics,,, -@value{auctex}, -@value{auctexman}}). -Initialization sets @code{LaTeX-math-insert-function}. Requires -Auc@TeX{}, v9.8a or higher. - -@item -@findex TeX-next-error -@vindex TeX-translate-location-hook -If @TeX{} displays an error message, it also displays the context of the -error position. Auc@TeX{} uses the context to set point to this -position when @kbd{M-x TeX-next-error} is invoked. The former context -are characters in the file, the latter characters in the buffer, -X-Symbol provides the translation. Initialization changes -@code{TeX-translate-location-hook}. -@end itemize - -@item bib-cite -@pindex bib-cite -Use Version 3.0 or higher. Initialization of package X-Symbol changes -the installation of package bib-cite to make X-Symbol's decoding not -overwrite @code{bib-cite}s highlighting of @code{\cite} and friends. - -@item preview-latex -@pindex preview-latex -@findex x-symbol-tex-preview-locations -@TeX{}'s error positions are also used by package @code{preview-latex}, -which was clever enough to reuse the above mentioned hook of Auc@TeX{}. -Unfortunately, that hook is @dots{} and does not allow a fast translation of -error positions, so @code{preview-latex} allows to provide better -variants of functions in that hook. X-Symbol's variant is -@code{x-symbol-tex-preview-locations}. - -@item reftex -@pindex reftex -@vindex reftex-translate-to-ascii-function -Use Version 3.26 or higher. For a workaround for some minor annoyances -with the combination Ref@TeX{}/X-Symbol/Multifile Document, see -@ref{Problems and Work-arounds,,,@value{reftex},@value{reftexman}}. By -default, the initialization of package X-Symbol makes Ref@TeX{}'s label -creation use the nicer Asciification of package X-Symbol (@pxref{Ascii -Representation}) by setting @code{reftex-translate-to-ascii-function}. - -@item whizzytex -Use the newest. -@end table - - -@node Syntax Hiliting Packages, File IO Packages, LaTeX Packages, Package Integration -@comment node-name, next, previous, up -@subsection Syntax Highlighting Packages (@code{font-lock} and add-ons) -@cindex Syntax Highlighting Packages -@cindex @code{font-lock} Packages -@cindex Integrating @code{font-lock} Packages - -Objectives: start highlighting after conversion. Highlighting is -needed for super- and subscripts and when using XEmacs without Mule -support. - -@table @code -@item fast-lock -@pindex fast-lock -@vindex fast-lock-save-faces -I recommend to use package @code{lazy-shot} instead. By default, the -initialization of package X-Symbol sets @code{fast-lock-save-faces} to -@code{nil} to make package @code{fast-lock} work with X-Symbol. - -@item font-latex -@pindex font-latex -@vindex font-lock-maximum-decoration -I suggest to set @code{font-lock-maximum-decoration} to value @code{t}, -2 or higher if you do not want to use super- and subscripts in arguments -of @code{\label} and friends. @xref{FAQ Stupid Subscripts}. - -@item font-lock -@pindex font-lock -@vindex font-lock-auto-fontify -Is required by this package (@pxref{Role of font-lock}). I strongly -recommend @emph{not} to turn on font-lock in @emph{any} mode hook, set -@code{font-lock-auto-fontify} to @code{t} instead (this is the default, -anyway). See also @code{lazy-shot}. - -If you turn on font-lock in a mode-hook, visiting a file would become -slower, since X-Symbol mode is usually turned on @emph{after} the -functions in the mode hook have been run, i.e., the fontification is -getting useless if the tokens are automatically decoded. - -@item lazy-lock -@pindex lazy-lock -From XEmacs-20.3 on, the successor is called @code{lazy-shot}. - -@item lazy-shot -@pindex lazy-shot -Is strongly recommended. -@end table - - -@node File IO Packages, Miscellaneous Packages, Syntax Hiliting Packages, Package Integration -@comment node-name, next, previous, up -@subsection File I/O Packages -@cindex File I/O Packages -@cindex I/O Packages -@cindex Remote File Packages -@cindex Compression Packages -@cindex Encryption Packages -@cindex Integrating I/O Packages - -Issue: compression, encryption and so on can be seen as some kind of -conversion. When doing multiple conversion, the sequence matters. - -@table @code -@item ange-ftp -@pindex ange-ftp -See also @code{efs} and @code{jka-compr}. - -@item comint -@pindex comint -@vindex comint-input-sender -The default installation makes @code{comint}s in-/output use X-Symbol's -conversion function. If you set variable @code{comint-input-sender}, -set it before initializing package X-Symbol. - -@item crypt -@pindex crypt -@findex save-buffer -@vindex x-symbol-auto-conversion-method -I recommend to use package @code{jka-compr} instead. @xref{Spurious -Encodings}. @xref{No Encoding}. If you use @code{crypt} and the -character @code{alpha} looks like @samp{\233a} after @code{save-buffer}, -set this variable to @code{slowest}. @xref{Open Questions}. - -@item efs -@pindex efs -XEmacs' version of @code{ange-ftp}. See also @code{jka-compr}. - -@item iso-cvt -@pindex iso-cvt -There is no need to use it. Package X-Symbol already provides the -conversion between Latin-1 characters and ``@TeX{} macros''. Package -X-Symbol does not provide the German and Spanish conversion tables, -though. - -@item iso-sgml -@pindex iso-sgml -There is no need to use it. Package X-Symbol already provides the -conversion between Latin-1 characters and ``@sc{sgml} entities''. -@xref{Miscellaneous Packages}, package @code{psgml-html}. - -@item jka-compr -@pindex jka-compr -Can be used with package X-Symbol, preferred to @code{crypt}. The -following is absolutely necessary (with or without using package -X-Symbol, at least in older Emacsen): load @code{jka-compr} after -@code{efs}/@code{ange-ftp}! - -@item latin-unity -@pindex latin-unity -Can be used with package X-Symbol, functionality is already provided by -X-Symbol for Latin-@{1,2,3,5,9@} characters: remapping (@pxref{Char -Aliases}) and recoding (@pxref{File Coding}). - -@c also ucs-tables.el? should be no problem@dots{} - -@item vc -@pindex vc -@findex vc-next-action -If you use package @code{crypt}, @code{vc-next-action} and friends -encode characters to tokens. @xref{Spurious Encodings}. -@end table - - -@node Miscellaneous Packages, , File IO Packages, Package Integration -@comment node-name, next, previous, up -@subsection Miscellaneous Packages -@cindex Miscellaneous Packages - -@table @code -@item abbrev -@pindex abbrev -On XEmacs without Mule support, I recommend to set variable -@code{words-include-escapes} to @code{t}. @xref{Nomule Problems}. - -@item completion -@pindex completion -Should work with X-Symbol (earlier version of X-Symbol had problems with -input method token). - -@item desktop -@pindex desktop -XEmacs' version (an old one) does not save its @file{.emacs.desktop} -files with a coding system. Emacs' version save it with an incorrect -coding system. Thus, strings which contain X-Symbol's private -characters might get corrupted. See also package @code{session} below. - -@item flyspell -@pindex flyspell -@findex global-flyspell-mode -Should work apart from the general problem of @code{ispell}. - -@item func-menu -@pindex func-menu -Should work with X-Symbol. - -@item ispell -@pindex ispell -The package @code{ispell} assumes the buffer contents to be the same as -the file contents and does not provide any hook to fix this. This -should be fixed in @code{ispell}, @ref{Wishlist Emacs}. @xref{FAQ -Spell Check}. - -@pindex ProofGeneral -Use a future version (hopefully v3.4). Includes special X-Symbol -initialization/handling and defines additional token languages. -@xref{External Languages}. - -@item psgml-html -@pindex psgml -@pindex psgml-html -@code{psgml-html}: Do not set @code{html-auto-sgml-entity-conversion} to -non-@code{nil}. @xref{File IO Packages}, package @code{iso-sgml}. - -@item session -@pindex session -Use Version 1.5a or higher. If strings in this file should always be -read correctly, you should put @code{(x-symbol-init-input)} into your -@file{~/.emacs}; otherwise strings containing X-Symbol's private -characters read from the @file{~/.session} file might look funny. See -also package @code{desktop} above. - -@item x-compose -@pindex x-compose -All characters from @code{x-compose} are also supported by package -X-Symbol. Thus, I recommend to use @kbd{@key{multi-key}} instead -@kbd{C-=} when running under XEmacs without Mule support. -@xref{Introducing Input Methods}. -@end table - -@c =========================================================================== - -@node Installing Fonts, Installing Fonts Exceed, Package Integration, Installation -@comment node-name, next, previous, up -@section Installing Additional Fonts -@cindex Installing Fonts -@cindex Fonts -@cindex X11 Fonts - -You don't have to install X-Symbol fonts in usual circumstances (with -the binary distribution, Emacs runs on the same machine, you are happy -with the default fonts). - -If your Emacs runs on a different machine, please follow the steps 5 and -6 below or read the next section. - -If you want to install additional fonts (since the binary distribution -contains only a limited selection of fonts and font sizes), please -follow the following sequence which worked for me (on SunOS -5.4-5.6/Solaris). If you have to do s.th. (completely) different on -your system, please let me know---I will include your hints. - -If you are lost with the following instructions, use the standard fonts -from the binary distribution. (Sorry, I do not have to time to answer -general Unix font questions. Or to be more exact, I'm not an expert in -this area@dots{}. Nevertheless, if you have a clearer explanation for -the installation sequence below, please send me a patch to -@file{man/x-symbol/x-symbol.texi}.) - -@enumerate -@item -@pindex xfd -@pindex xfontsel -Find the font which you want to replace by checking fonts with the X11 -program @code{xfontsel} or @code{xfd}. The bad news is that there is no -general way to say which character belongs to which font. My only goal -was to use standard fonts whenever possible; the rest belong the the -xsymb1 font (which I have designed). If you want to use a font as an -alternative to another font, it must have the same charset -registry-encoding. - -@item -Find the @file{.bdf} files of your preferred fonts in your file system -or by Internet search engines like Google. The source distribution of -package X-Symbol contains @file{.bdf} files for additional fonts sizes -of all fonts except the xsymb1 font (@pxref{Wishlist Fonts}). - -There are two categories of @file{.bdf} files. The first category -contains files for fonts which are already installed; the files are -needed to create and install the super- and subscript versions. Copy -these files to @file{~/.xemacs/xemacs-packages/etc/x-symbol/origfonts/}. The second -category contains files for fonts which are not installed. Copy these -files to @file{~/.xemacs/xemacs-packages/etc/x-symbol/fonts/}. - -@item -In file @file{~/.xemacs/xemacs-packages/etc/x-symbol/fonts/Makefile}, -change variables @code{ORIGBDFS} for the first category and @code{BDFS} -for the second category accordingly. - -@item -@pindex perl -In directory @file{~/.xemacs/xemacs-packages/etc/x-symbol/fonts/}, -execute @code{make mkdirs}, and @code{make pcfs}. You need GNUs -@code{make} and @code{perl}, Version 5 (or higher). - -@item -If your Emacs runs on a different machine or if you want to use the -fonts outside Emacs, too, add X-Symbol's fonts to your font path by -inserting the following in your @file{~/.xsession} (X11 startup file). - -@pindex xset -@example -xset +fp ~/.xemacs/xemacs-packages/etc/x-symbol/pcf/ -@end example - -For a system-wide installation, you might want to add this directory to -the system-wide font path instead. - -If your system doesn't have @code{xset}, you should copy all @file{.pcf} -files (compiled fonts) from @file{~/.xemacs/xemacs-packages/etc/x-symbol/pcf/} into -directory @file{/usr/lib/X11/fonts/75dpi/} (Slackware distribution) and -run @samp{mkfontdir 75dpi} in that directory. - -@item -Your are on the safe side if you restart X11 after this. - -@item -Set the Elisp variables which define the fonts. @xref{Installing Fonts Lisp}. -@end enumerate - -@c ==================================================================== - -@node Installing Fonts Exceed, Installing Fonts Lisp, Installing Fonts, Installation -@comment node-name, next, previous, up -@section Installing Fonts for Exceed (X-server on Windows/NT) -@cindex Installing Fonts -@cindex Fonts -@pindex Exceed -@pindex Windows/NT - -If your X-server on Windows/NT is Exceed and if you have configured -Exceed to use the ``native window manager'' for your Unix screens, you -must install the X-Symbol fonts on Windows/NT. The following works with -Exceed 6.0 & NT 4.0 and Exceed 7.0 & Windows 2000: - -@enumerate -@item -In Unix, edit file @file{~/.xemacs/xemacs-packages/etc/x-symbol/fonts/makesub} to limit -the shift for superscript to 3 points: -@smallexample -%supoffs = ('08',3, 10,3, 12,3, 14,3, 16,3, 18,3, 24,3); -@end smallexample - -@item -Then, execute @code{make mkdirs}, and @code{make gens} in -@file{~/.xemacs/xemacs-packages/etc/x-symbol/fonts/}. If you have problems, please read -the previous section. - -@item -In Exceed's configuration window, click on @key{Font} to open Window -@file{Font Settings}. In this window, click on @key{Select All}, then -on @key{Compile Fonts...}. - -@item -Copy X-Symbol's @file{bdf} files in @file{~/.xemacs/xemacs-packages/etc/x-symbol/fonts/} -and @file{~/.xemacs/xemacs-packages/etc/x-symbol/genfonts/} to a Windows/NT directory -and select this directory in the Exceed Window @file{Compile Fonts}. -Click on @key{Compile}. - -@item -In Window @file{Font Settings}, click on @key{Font Database...}. In -this window, click on @key{Add...}. Enter the output directory from the -previous step as the @samp{Font Directory} and @code{xsymb} as the -@samp{File Name (*.fdb)}. Click on @key{OK}. - -@item -You might want to rearrange the sequence of Font DB files to let files -@file{75dpi} appear prior to files @file{100dpi}, because X-Symbol's -fonts are designed for 75dpi. - -@item -In Window @file{Font Database}, click on @key{Rebuild Database...} and -then on @key{OK}. -@end enumerate - -Note: @emph{Windows NT 4.0 will crash (bluescreen) if you use fonts -compiled by Exceed from the @file{pcf} files or if you missed step 1, -i.e., limiting the superscript shift!} With Exceed 7.0 & Windows 2000, -there is no crash, but these fonts cannot be displayed. - -@c ==================================================================== - -@node Installing Fonts Lisp, Installing Manual, Installing Fonts Exceed, Installation -@comment node-name, next, previous, up -@section Lisp Coding when Using Other Fonts -@cindex Font Lisp Setup -@cindex Font Lisp Installation - -Package X-Symbol needs to know which fonts to use for the X-Symbol -characters and super- and subscripts. It also must interact with -package @code{font-lock} to display them (@pxref{Role of font-lock}). - -If you have installed additional fonts (@pxref{Installing Fonts}) for -use with package X-Symbol, you might have to change the following -variables: - -@vtable @code -@item x-symbol-latin1-fonts -@itemx x-symbol-latin2-fonts -@itemx x-symbol-latin3-fonts -@itemx x-symbol-latin5-fonts -@itemx x-symbol-latin9-fonts -@itemx x-symbol-xsymb0-fonts -@itemx x-symbol-xsymb1-fonts -The value of each variable consists of three elements: one for the -normal text, one for subscripts and one for the superscripts. Each -element is a list of fonts which are tried in order---the first which -exists on your system is used. - -If you change the values of one of these variables, do only specify the -same charset registry@minus{}encoding (e.g., @samp{adobe-fontspecific}) -as specified by the fonts in the default value of this variable. - -@item x-symbol-font-sizes -Here you can specify the sizes for all fonts in the above mentioned -variables. The value consists of regular expressions matching font -names and numbers which replace all occurences of @samp{%d} in the -names. -@end vtable - -E.g., if you prefer larger fonts, you might want to insert the following -into your @file{~/.emacs}: - -@smalllisp -(setq x-symbol-font-sizes - '(18 ("_su[bp]-" . 14) ("\\`-etl-" . 16))) -(setq x-symbol-xsymb0-fonts - '(("-adobe-symbol-medium-r-normal-*-*-%d0-*-*-*-*-adobe-fontspecific" - "-xsymb-xsymb0-medium-r-normal--%d-%d0-75-75-p-85-adobe-fontspecific") - ("-adobe-symbol_sub-medium-r-normal-*-*-%d0-*-*-*-*-adobe-fontspecific" - "-xsymb-xsymb0_sub-medium-r-normal--%d-%d0-75-75-p-74-adobe-fontspecific") - ("-adobe-symbol_sup-medium-r-normal-*-*-%d0-*-*-*-*-adobe-fontspecific" - "-xsymb-xsymb0_sup-medium-r-normal--%d-%d0-75-75-p-74-adobe-fontspecific"))) -@end smalllisp - -The first assignment changes the font sizes, the second makes X-Symbol -using the original Adobe symbol font instead of my minor modification -(appearance) of it. The xsymb1 font will be scaled, which might not -look nice (@pxref{FAQ Font Size}). - -You might want to change the following variables: - -@vtable @code -@item x-symbol-latin-force-use -Package X-Symbol defines Latin characters even when the corresponding -fonts are missing (this can be changed by this variable). Characters -for the symbol fonts are only defined if the corresponding fonts are -available. - -@item x-symbol-mule-change-default-face -Package X-Symbol does not change the fonts of pre-defined Mule charsets -(this can be changed by this variable). Thus, the variables from -Section @ref{Installing Fonts Lisp} might have no influence if Emacs -already has defined fonts for the corresponding charsets. -@end vtable - -@c ==================================================================== - -@node Installing Manual, Checking Installation, Installing Fonts Lisp, Installation -@comment node-name, next, previous, up -@section Installing Info, Postscript and HTML Files -@cindex Installing Manual -@cindex Info -@cindex Texinfo -@cindex Postscript -@cindex HTML -@cindex Manual -@cindex Documentation - -@pindex makeinfo -To create the info files, execute @code{make info} in directory -@file{~/.xemacs/xemacs-packages/man/x-symbol/} of the distribution. It requires -@code{makeinfo}, Version 1.68 or higher. This should not be necessary -if you use the binary distribution of package X-Symbol. - -If no entry for X-Symbol is automatically added to the info directory -listing, add the following line to @file{~/.xemacs/xemacs-packages/info/dir}: -@smallexample -* X-Symbol:: Semi WYSIWYG for LaTeX, HTML and other "token languages" -@end smallexample - - -@pindex texi2dvi -Optionally, you might want to create a printed document from the @TeX{}info -file. Execute @code{make ps} in directory @file{~/.xemacs/xemacs-packages/man/x-symbol/} -of the distribution. It requires @code{texi2dvi}. - -@pindex latex2html -Optionally, you can create an online manual for a web browser by -executing @code{make html} in directory @file{~/.xemacs/xemacs-packages/man/x-symbol/} of -the distribution. It requires @code{texi2html}. - -All formats of the manual are created by executing @code{make all}. - -@c ==================================================================== - -@node Checking Installation, , Installing Manual, Installation -@comment node-name, next, previous, up -@section Checking the Correct Installation of Package X-Symbol -@cindex Checking Installation -@cindex Final Installation Checks -@cindex Installation Checks - -After having completed the installation, exit and restart Emacs. - -@itemize @bullet -@item -Type @kbd{M-x show-message-log} to check whether you got problems so -far, e.g., whether errors occurred when loading a file. If you do, -identity and correct the offender. - -@item -Type @kbd{M-x x-symbol-grid} in buffer @file{*scratch*}. If you get the -Grid but if you see less characters than you see on the web page of -package X-Symbol, you have decided to use other fonts but failed to -install them correctly. This is also mentioned in buffer -@file{*Warnings*}. @xref{Installing Fonts}. - -@item -Move your mouse pointer to any X-Symbol character in buffer -@file{*X-Symbol Grid (x-symbol charsym)*}, press the right mouse button -and initialize successively all token languages. - -@item -Again, type @kbd{M-x show-message-log} to check whether you got problems -so far, e.g., whether errors occurred when loading a file. If you do, -identity and correct the offender. - -@item -If buffer @file{*Warnings*} does not exist in the buffer menu, -everything is fine. So is (for me as the author of package X-Symbol), -if @samp{X-Symbol} is not mentioned there. If there is a warning with -@samp{no valid image converter}, you have forgotten to install -ImageMagick (@pxref{Installing Image Converter}). -@end itemize - -@c =========================================================================== - -@node Concepts, Input Methods, Installation, Top -@comment node-name, next, previous, up -@chapter Concepts of Package X-Symbol -@cindex Concepts -@cindex Terminology -@cindex Basics - -This chapter describes the concepts of package X-Symbol. It contains -quite a few forward references to feature which are based on these -concepts, such as @ref{Input Methods} and @ref{Features}. - -@menu -* Token Language:: What does a X-Symbol character represent. -* Conversion:: Decoding tokens, encoding characters. -* Minor Mode:: How to control the behavior of X-Symbol. -* Poor Mans Mule:: Running X-Symbol under XEmacs/no-Mule. -* Role of font-lock:: Why does X-Symbol need @code{font-lock}. -* Char Group:: Character group and token classes. -@end menu - -@c =========================================================================== - -@node Token Language, Conversion, Concepts, Concepts -@comment node-name, next, previous, up -@section Token Language -@cindex Token Language -@cindex Language - -As mentioned in the overview, ``X-Symbol Characters'' in the buffer are -represented by ``tokens'' in the file. The correspondence between these -is determined by the @dfn{token language} which is in close relation to -the major mode of the current buffer. E.g., character @code{alpha} -stands for @code{\alpha} in La@TeX{} buffers. - -For details of predefined token languages ``@TeX{} macro'' (@code{tex}), -``@sc{sgml} entity'' (@code{sgml}), ``Bib@TeX{} macro'' (@code{bib}), and -``@TeX{}info command'' (@code{texi}), see @ref{Supported Languages}. - -The token language determines the conversion between X-Symbol characters -and tokens (@ref{Conversion}), the input methods (@pxref{Input -Methods}), and various other features (@pxref{Features}). - -The token language is defined by the following buffer-local variable: - -@vtable @code -@item x-symbol-language -Token language used in current buffer. You can set this variable in the -``local variables list'' near the end of the file (@pxref{File -Variables,,,@value{emacs},@value{emacsman}}), e.g.: - -@example -%% Local Variables: -%% x-symbol-language: tex -%% End: -@end example -@end vtable - -Package X-Symbol uses a reasonable value according to the major mode and -the file name of a buffer if the variable is not already buffer-local. -A valid token language is required to turn on X-Symbol Minor mode, see -@ref{Minor Mode}. - -A token language must be @dfn{registered}, if you want to use it. By -default, the above mentioned token languages are registered. - -@c =========================================================================== - -@node Conversion, Minor Mode, Token Language, Concepts -@comment node-name, next, previous, up -@section Conversion: Decoding and Encoding -@cindex Conversion -@cindex Decoding -@cindex Encoding - -As mentioned, X-Symbol characters in the buffer are represented by -tokens in the file. Thus, we need some conversion from tokens to -characters, called @dfn{decoding}, and some conversion from characters -to tokens, called @dfn{encoding}. - -We have the additional problem that some characters are not only -represented by tokens, but also via some 8bit character encoding. - -Package X-Symbol supports the following 8bit character encodings: -Latin-1 (@code{iso-8859-1}), Latin-2 (@code{iso-8859-2}), Latin-3 -(@code{iso-8859-3}), Latin-5 (@code{iso-8859-9}), and Latin-9 -(@code{iso-8859-15}). It currently supports less encodings with XEmacs -on MS-Windows (@pxref{Requirements}). - - -@menu -* Default Coding:: Encoding of your default charset. -* File Coding:: Specific encoding of a file. -* Controlling 8bit Coding:: Do you want to store 8bit characters? -* Unique Decoding:: Restrict decoding to avoid normalization? -* Conversion Commands:: Interactive encoding and decoding. -* Copy with Conversion:: Copy & paste with conversion. -* Char Aliases:: Different charsets include the same chars. -@end menu - - -@node Default Coding, File Coding, Conversion, Conversion -@comment node-name, next, previous, up -@subsection Default Coding -@cindex Default Coding -@cindex Default Encoding -@cindex Default Font -@cindex Coding, Default -@cindex Encoding, Default -@cindex Font, Default - -As mentioned, some characters have a 8bit file encoding, and X-Symbol -needs to know which 8bit file encoding you use normally when visiting a -file and saving a buffer. - -With Mule support, Emacs/XEmacs can recognize the @dfn{normal file -encoding}, also called a coding system (@pxref{Recognize -Coding,,,@value{emacs},@value{emacsman}}). - -Without Mule support, XEmacs can usually only support 8bit characters of -one encoding; this encoding corresponds to the charset/registry of your -default font. Here, the @dfn{normal file encoding} is the default -encoding: - -@vtable @code -@item x-symbol-default-coding -The default encoding. The value must be a symbol denoting one of the -supported encodings or @code{nil}. The variable must be set before -X-Symbol has been initialized. @xref{Installing Lisp}. -@end vtable - -The @dfn{default encoding} is not only used to determine the normal file -encoding without Mule, but also for the following: - -@itemize @bullet -@item -X-Symbol has its own mechanism to recognize a file encoding which only -works with a specified default encoding. @xref{File Coding}. - -@item -The same character can be included in various Latin charsets and -X-Symbol needs to know which of the instances (which Emacs views as -different characters) to support. @xref{Char Aliases}. - -@item -Without Mule support, the default encoding is also needed to decide -which characters have to be faked by 2 characters internally: exactly -characters in those charsets which do not correspond to the default -encoding. @xref{Poor Mans Mule}. -@end itemize - -To deduce the default value, X-Symbol inspects the Mule language -environment and the output of the shell command @code{locale}, or to be -more exact: - -@example -locale -ck code_set_name charmap -@end example - -Without Mule support, you get a warning if the command does not exist on -your system or lists an encoding which is not supported by X-Symbol, -such as some Asian encoding. Value @code{nil} is the same as -@code{iso-8859-1}. - -With Mule support, you get a warning if the command lists a supported -encoding which is different from the encoding deduced from the Mule -language environment. Value @code{nil} makes sure that X-Symbol file -encoding detection (@pxref{File Coding}) only works if Emacs has -detected the same encoding; it works like @code{iso-8859-1} otherwise. - - -@node File Coding, Controlling 8bit Coding, Default Coding, Conversion -@comment node-name, next, previous, up -@subsection File Coding of 8bit Characters -@cindex File Coding -@cindex Coding in File -@cindex Encoding in File -@cindex 8bit File Coding -@cindex Latin File Coding -@cindex Recoding - -X-Symbol can use a different encoding for single buffers/files, even if -you use X-Symbol on XEmacs without Mule support. To do so, set the -following buffer-local variable: - -@vtable @code -@item x-symbol-coding -8bit character encoding in the file visited by the current buffer. -Value @code{nil} represents the normal file encoding (@pxref{Default -Coding}). - -With Mule support, any value other than @code{nil} is considered invalid -if the normal file encoding is neither the same as this value nor the -same as the default encoding. I.e., if your default encoding is -@code{nil}, X-Symbol's file encoding detection never takes precedence -over Emacs' one, i.e., the normal file encoding. - -You can set this variable in the ``local variables list'' near the end -of the file (@pxref{File Variables,,,@value{emacs},@value{emacsman}}), -e.g.: - -@example -<!-- Local Variables: --> -<!-- x-symbol-coding: iso-8859-2 --> -<!-- End: --> -@end example -@end vtable - -If the variable is not already buffer-local, a reasonable value is -deduced when turning on X-Symbol (@pxref{Minor Mode}) by searching for -some language dependent headers at the beginning of the file: - -@vtable @code -@item x-symbol-auto-coding-search-limit -X-Symbol usually searches for something like -@samp{\usepackage[@dots{}]@{inputenc@}} (@pxref{TeX Macro}) or @samp{<meta @dots{} -charset=@dots{}>} (@pxref{SGML Entity}) in the first 10000 characters. -@end vtable - -If you choose not to save a file containing 8bit characters -(@pxref{Controlling 8bit Coding}), the file encoding is still important, -since the file might contain 8bit characters when you visit it. - -If the file encoding is different to the normal file encoding, X-Symbol -performs the necessary recoding itself. @dfn{Recoding} changes a -character with code position @var{pos} in one charset to a character -with the same code position @var{pos} in another charset. If the normal -file encoding is different to the default encoding, X-Symbol also -resolves character aliases (@pxref{Char Aliases}). - -If you have specified an invalid file encoding (including an encoding -different to a non-default normal file encoding), we have the following -cases: - -@itemize @bullet -@item -If the normal file encoding is unsupported (any file encoding is invalid -in this case) or if the normal file encoding is supported and the file -does not contain 8bit characters, we always encode all X-Symbol -character (@xref{Controlling 8bit Coding}). The modeline includes -@samp{-i} to represent the file encoding (@pxref{Minor Mode}), except if -the default encoding is @code{nil}, the normal file encoding is -unsupported, and the variable @code{x-symbol-coding} is not specified. - -@item -If the normal file encoding is supported and the file contains at least -one 8bit character, X-Symbol does not touch 8bit characters and never -produces them, neither via decoding (@pxref{Unique Decoding}) nor via -input methods. The modeline includes @samp{-err} to represent the file -encoding (@pxref{Minor Mode}). -@end itemize - -We end with a little example: if your normal file encoding and default -encoding is Latin-1, and you visit a file with -@samp{\usepackage[latin9]@{inputenc@}} producing some document containing -the Euro sign, you see the Euro character in Emacs when X-Symbol is -enabled, but you see the currency character without X-Symbol. - - -@node Controlling 8bit Coding, Unique Decoding, File Coding, Conversion -@comment node-name, next, previous, up -@subsection Store or Encode 8bit Characters -@cindex Storing 8bit Characters -@cindex Controlling 8bit Coding -@c @cindex Buffer 8bit Control -@cindex 8bit Coding Control -@cindex Latin in File - -You can specify that 8bit characters (according to the coding in your -file, @ref{File Coding}), are not encoded to tokens (when saving a -file), by setting the following buffer-local variable: - -@vtable @code -@item x-symbol-8bits -Whether to store 8bit characters when saving the current buffer. - -You can set this variable in the ``local variables list'' near the end -of the file (@pxref{File Variables,,,@value{emacs},@value{emacsman}}), -e.g.: - -@example -%% Local Variables: -%% x-symbol-8bits: t -%% End: -@end example -@end vtable - -If the variable is not already buffer-local, a reasonable value is -deduced when turning on X-Symbol (@pxref{Minor Mode}) by setting it the -the value of @code{x-symbol-coding}, or searching in the file for 8bit -characters: - -@vtable @code -@item x-symbol-auto-8bit-search-limit -If there is a 8bit character in the file when visiting it, X-Symbol will -also store 8bit characters when saving the buffer. -@end vtable - -If the file encoding is invalid (@pxref{File Coding}), we always search -for 8bit characters in the complete document and set -@code{x-symbol-8bits} accordingly. Then, a non-@code{nil} value also -implies unique decoding (@pxref{Unique Decoding}). - -While the variable @code{x-symbol-8bits} usually only influences the -encoding, it also influences the decoding if you choose to decode -uniquely (@pxref{Unique Decoding}). - -Setting variable @code{x-symbol-8bits} to @code{nil} does not -necessarily mean that the file will not contain 8bit characters: the -characters might have no token representation in the current token -language (@pxref{TeXinfo Command}), or they are glyphs for ununsed code -points in the Latin-3 charset. In both cases, it is unlikely that you -have inserted these invalid characters via X-Symbol's input methods -(@pxref{Introducing Input Methods}), you have probably copied them into -the current buffer. - - -@node Unique Decoding, Conversion Commands, Controlling 8bit Coding, Conversion -@comment node-name, next, previous, up -@subsection Unique Decoding -@cindex Unique Decoding -@cindex Restricted Decoding -@cindex Unique @TeX{} macro - -Token languages might define more than one token representing the same -character. When decoding and encoding these tokens, they will be -@dfn{normalized} to one form, the @dfn{canonical representation}. E.g., -with language @code{tex}, visiting a file with tokens @code{\neq} and -@code{\ne} converts both tokens to character @code{lessequal}, saving -the buffer stores the character as token @code{\neq} in both -occurrences. - -It can also happen that a file contains both a 8bit character and a -token which would be converted to exactly that character. When saving -the file, both characters are either not encoded, or both are encoded to -the same token. - -Normally, this is no problem. But if you redefine standard @TeX{} -macros, it certainly could be the case (@pxref{TeX Macro Problems})! -For this reason, package X-Symbol provides the following buffer-local -variable: - -@vtable @code -@item x-symbol-unique -Whether to limit the decoding in such a way that no normalization will -happen. That means: only decode canonical tokens, and, if -@code{x-symbol-8bits} is non-@code{nil} (@pxref{Controlling 8bit -Coding}), do not decode tokens which would be decoded to 8bit characters -(according to the coding in your file, @ref{File Coding}). - -You can set this variable in the ``local variables list'' near the end -of the file (@pxref{File Variables,,,@value{emacs},@value{emacsman}}), -e.g., together with a setting for @code{x-symbol-8bits}: - -@example -%% Local Variables: -%% x-symbol-8bits: t -%% x-symbol-unique: t -%% End: -@end example -@end vtable - -If the variable is not already buffer-local, a reasonable value is -deduced when turning on X-Symbol (@pxref{Minor Mode}): it will be set to -@code{t} if X-Symbol mode is not automatically turned on. - -If the file encoding is invalid (@pxref{File Coding}) and -@code{x-symbol-8bits} is non-@code{nil} (@pxref{Controlling 8bit -Coding}), X-Symbol always uses unique decoding (@pxref{Unique -Decoding}). - - -@node Conversion Commands, Copy with Conversion, Unique Decoding, Conversion -@comment node-name, next, previous, up -@subsection Conversion Commands -@cindex Conversion Commands -@cindex Automatic Conversion -@cindex Interactive Conversion -@cindex Explicit Conversion - -First the good news: most of the time, the necessary conversions are -performed automatically when you would expect them to be performed: - -@itemize @bullet -@item -Turning X-Symbol minor mode (@pxref{Minor Mode}) on/off also performs -decoding/encoding. - -@item -Saving a buffer where X-Symbol is enabled will encode the characters to -tokens in the file (of course, you keep to have the characters in the -buffer). - -@item -Inserting a file into a buffer where X-Symbol is enabled will decode the -tokens in the inserted region. -@end itemize - -Nevertheless, you might want to perform the conversions explicitly in -some situations by using one of the following commands (also to be found -in the menu): - -@table @kbd -@item M-x x-symbol-decode-recode -@findex x-symbol-decode-recode -Recode all characters (if necessary) and decode all tokens to -characters. - -@item M-x x-symbol-decode -@findex x-symbol-decode -Decode all tokens to characters, do not recode characters. - -@item M-x x-symbol-encode-recode -@findex x-symbol-encode-recode -Encode all characters in buffer to tokens or recode them. - -@item M-x x-symbol-encode -@findex x-symbol-encode -Encode all characters in buffer to tokens. No recoding will be -performed since 8bit characters will always be encoded if the file -coding is different to the default coding, since @code{x-symbol-8bits} -is relative to the file coding, @ref{Controlling 8bit Coding}. -@end table - -All commands work on the region if it is active, or the (narrowed part -of the) buffer if no region is active. - -If the file coding is the same as the default coding, the variants with -and without recoding (@pxref{File Coding}) do the same. The variants -with recodings are the ones used when doing the conversion -automatically. The variants without recodings are the ones used when -using the special Copy & Paste commands presented in the next -subsection. - - -@node Copy with Conversion, Char Aliases, Conversion Commands, Conversion -@comment node-name, next, previous, up -@subsection Copy & Paste with Conversion -@cindex Copy and Conversion -@cindex Copy Encoded -@cindex Paste and Conversion -@cindex Paste Decoded -@cindex Yank Decoded - -You probably use X-Symbol, because you want to produce some -non-@sc{ascii} characters in your final document, but you are not really -interested what kind of token you would need to write. (After all, you do -not use a hex editor to produce documents using some non-@sc{ascii} -encoding in the file, since you are not interested in the byte sequence -of individual characters.) - -Consequently, all editing operations really work on characters, not on -the corresponding tokens for the token language of the current buffer. -This includes copying and pasting: if you copy the character -@code{plusminus} from a LaTeX buffer to a HTML buffer, you really copy -that character and not the three characters of the TeX macro @code{\pm}. - -If you copy text to a buffer where X-Symbol is not enabled, like a mail -buffer, that is probably not what you want. Similarly, you would -probably like to see the X-Symbol characters for tokens in a text which -you have copied from such a buffer. Therefore, X-Symbol provides the -following commands (also to be found in the menu): - -@table @kbd -@item M-x x-symbol-copy-region-encoded -@findex x-symbol-copy-region-encoded -@vindex kill-ring -Save the region in the @code{kill-ring} with all X-Symbol characters -encoded like by @kbd{M-x x-symbol-encode}, i.e., without recoding. - -@item M-x x-symbol-yank-decoded -@findex x-symbol-yank-decoded -Reinsert the last text in the @code{kill-ring} and decode the inserted -text like @kbd{M-x x-symbol-decode}, i.e., without recoding. -@end table - -You could get the same result with the usual copy & paste commands and -the conversion commands from the previous section (@pxref{Conversion -Commands}), but this would clutter the undo information of the current -buffer and would require an additional undo operation for the copy. - - -@node Char Aliases, , Copy with Conversion, Conversion -@comment node-name, next, previous, up -@subsection Character Aliases -@cindex Char Aliases -@cindex Character Aliases -@cindex Aliases of Characters -@cindex Latin Character Aliases -@cindex Remapping Characters - -A @dfn{character alias} or @dfn{char alias} is a character which is also -a character in a font with another registry, e.g., @code{adiaeresis} is -defined in all supported Latin fonts. Emacs distinguish between these -five characters. In package X-Symbol, one of them, with -@code{x-symbol-default-coding} (@pxref{Default Coding} if possible, is -supported by the input methods, the other ones are char aliases to the -supported one. - -The reason is that it would be confusing for the user to choose among -different @code{adiaeresis}es and that there are neither different -@code{adiaeresis}es in Unicode nor in the token representations of -languages @code{tex} and @code{sgml}. - -8bit characters in files with a file coding @code{x-symbol-coding} other -than @code{x-symbol-default-coding} are converted to the ``normal'' -form. E.g., if you have a Latin-1 font by default, the -@code{adiaeresis} in a Latin-2 encoded file is a Latin-1 -@code{adiaeresis} in the buffer. When saving the buffer, its is again -the right 8bit character in the Latin-2 encoded file. - -Thus, in normal cases, buffers do not have char aliases. In Emacs with -Mule support, this is only possible if you copy characters from buffers -with characters considered as char aliases by package X-Symbol, e.g., -from the Mule file @file{european.el}. In XEmacs without Mule support, -this is only possible if you use commands like @kbd{C-q 2 3 4}. - -If you have char aliases in the current buffer, you might want to use -(it is not really necessary, just when searching for characters): - -@table @kbd -@item M-x x-symbol-unalias -@findex x-symbol-unalias -Resolve all character aliases in buffer. If the region is active, only -resolve char aliases in the region. -@end table - -A single char alias before point can be resolved by command -@code{x-symbol-modify-key} and @code{x-symbol-rotate-key}, see -@ref{Input Method Context}. - -@pindex latin-unity -The XEmacs package @code{latin-unity} provides a command to ``remap'' -characters to one character set (if possible). X-Symbol's unaliasing -can be seen as remap operations to a fixed sequence of character sets. - -@c =========================================================================== - -@node Minor Mode, Poor Mans Mule, Conversion, Concepts -@comment node-name, next, previous, up -@section Minor Mode -@cindex Minor Mode -@cindex Mode -@cindex X-Symbol Mode - -X-Symbol is a minor mode (@pxref{Minor -Modes,,,@value{emacs},@value{emacsman}}) which enables the features -mentioned in this manual: - -@itemize @bullet -@item -X-Symbol mode is required to do the conversions. Turning the minor mode -on/off also includes decoding/encoding (@pxref{Conversion Commands}). - -@item -X-Symbol mode provides the minor mode menu which includes: various -commands, commands to insert characters (@pxref{Input Method Menu}), and -entries to change some global and buffer-local variables mentioned in -this manual. The menu might also include individual entries for a token -language (@pxref{TeX Macro Basics}): - -@vtable @code -@item x-symbol-@var{lang}-extra-menu-items -Extra menu items for each token language @var{lang}. -@end vtable - -@item -X-Symbol mode is required for most input methods (@pxref{Input Methods}) -and other features (@pxref{Features}). -@end itemize - -With the default installation, X-Symbol mode is automatically turned on -when it is appropriate to do so (see below for details). You can -control it for individually by the following command: - -@table @kbd -@item M-x x-symbol-mode -@findex x-symbol-mode -@vindex x-symbol-mode -Toggle X-Symbol mode. If provided with a numeric prefix argument, turn -X-Symbol mode on if the argument is positive, else turn it off. -@end table - -Turning X-Symbol mode on requires that you have a valid token language -for the current buffer. Since turning X-Symbol mode on also decodes -tokens, it is also useful to set the variables which control the -conversion (@pxref{Conversion}). - -Since people usually do not want to write some Emacs lisp functions to -do some customizations, X-Symbol provides the following variables which -induce X-Symbol to set the necessary buffer-local variables when -X-Symbol is turned on: - -@vtable @code -@item x-symbol-auto-style-alist -You can use the major mode and/or the name of the buffer or visited -file, and specific functions to set the following variables (if not -already buffer-local): - -@itemize @minus -@item -@code{x-symbol-token-language} (@pxref{Token Language}), indicated in -the modeline, e.g. @samp{tex}, -@item -@code{x-symbol-mode}, i.e., whether it is appropriate to turn on -X-Symbol mode automatically, -@item -@code{x-symbol-coding} (@pxref{File Coding}), indicated in the modeline -if different from the default coding, e.g. @samp{-l2} for Latin-2, -@item -@code{x-symbol-8bits} (@pxref{Controlling 8bit Coding}), indicated in -the modeline by @samp{8}, -@item -@code{x-symbol-unique} (@pxref{Unique Decoding}), indicated in -the modeline by @samp{*}, -@item -@code{x-symbol-subscripts} (@pxref{Super and Subscripts}), indicated in -the modeline by @samp{s}, -@item -@code{x-symbol-image} (@pxref{Images}), indicated in the modeline by -@samp{i}, -@end itemize - -@item x-symbol-@var{lang}-modes -Major modes which use token language @var{lang} by default. -@xref{Supported Languages}. - -@item x-symbol-@var{lang}-auto-style -Default values for the above mentioned variables @code{x-symbol-mode}, -@code{x-symbol-coding}, @code{x-symbol-8bits}, @code{x-symbol-unique}, -@code{x-symbol-subscripts}, and @code{x-symbol-image} if not already -buffer-local. - -@item x-symbol-auto-mode-suffixes -Regular expression matching file suffixes to be ignored when checking -file names for the derivation above, e.g., extension @file{.orig}. - -@item x-symbol-modeline-state-list -This variable controls the modeline appearance just mentioned. -@end vtable - -@c ==================================================================== - -@node Poor Mans Mule, Role of font-lock, Minor Mode, Concepts -@comment node-name, next, previous, up -@section Poor Man's Mule: Running Under XEmacs/no-Mule -@cindex Poor Man's Mule -@cindex No Mule -@cindex XEmacs without Mule - -Using XEmacs/no-Mule normally means that you are restricted to use not -more than 256 different characters in your documents. - -Package X-Symbol provides a lot more characters which can also be used -with XEmacs/no-Mule. Internally, all X-Symbol characters except the -ones of your default font (@pxref{Default Coding}) are represented by -two characters, see @ref{Char Representation}. - -This can lead to a lot of problems, which are resolved by the following -methods (some annoyances remain, @pxref{Nomule Problems}) when X-Symbol -mode is turned on (@pxref{Minor Mode}): - -@itemize @bullet -@item -After each editing command, i.e., point movement, deletion of text and -insertion of text, package X-Symbol checks whether just one of the two -internal characters of an X-Symbol character has been affected. - -@item -Package @code{font-lock} is used to display these two-character -sequences with the correct fonts. The potential problem lies in the -set-up of the corresponding font-lock keywords, see @ref{Role of -font-lock}. - -@ftable @code -@item x-symbol-nomule-fontify-cstrings -Alternatively to enabling @code{font-lock}, you can run this functions -in buffers having the special two-character sequences. With the default -installation, this function is run in the selection buffers of package -@code{reftex}. -@end ftable -@end itemize - -@c ==================================================================== - -@node Role of font-lock, Char Group, Poor Mans Mule, Concepts -@comment node-name, next, previous, up -@section The Role of @code{font-lock} -@cindex Role of @code{font-lock} -@cindex @code{font-lock} Use -@cindex Special Fonts - -Package X-Symbol uses package @code{font-lock} to display super- and -subscripts (@pxref{Super and Subscripts}) and to display its special -characters under XEmacs/no-Mule (@pxref{Poor Mans Mule}). Thus, you -should enable @code{font-lock} in buffers where you want to use X-Symbol -(it is by default). @xref{Syntax Hiliting Packages}. - -When X-Symbol mode is turned on, it automatically adds the necessary -font-lock keywords to the buffer-local value of -@code{font-lock-keywords} and all font-lock keywords which are commonly -used with the current token language. - -Setting all font-lock keywords is important since @code{font-lock} might -not yet been turned on or since you might want to change -@code{font-lock}s decoration of the current buffer after X-Symbol has -been turned on. - -Please note that switching the mode by typing @kbd{M-x latex-mode} -@emph{does not set} the La@TeX{}'s font-lock keywords! They are set at -the end of @kbd{C-x C-f}. If you switch the mode, turn on -@code{font-lock} by yourself. - -Independently from package X-Symbol, the following command might be -useful in some situations: - -@table @kbd -@item M-x x-symbol-fontify -@findex x-symbol-fontify -Refontify buffer. -@end table - -@c ==================================================================== - -@node Char Group, , Role of font-lock, Concepts -@comment node-name, next, previous, up -@section Character Group and Token Classes -@cindex Character Group -@cindex Group of Characters -@cindex Similar Characters -@cindex Category of Character -@cindex Syntax of Character -@cindex Token Classes -@cindex Classes of Tokens -@cindex Coloring Scheme - -Each X-Symbol character belongs to a @dfn{character group}, e.g., -@code{natnums} belongs to @code{setsymbol}. A character group should -consists of similar characters where ``similar'' means similar meaning, -not similar appearance. Two characters which have nearly the same -appearance, should be in the same group, though. The group determines: - -@itemize @bullet -@item -The Grid and submenu header under which the character can be found -(@pxref{Input Method Grid}, @ref{Input Method Menu}). - -@item -The default bindings of characters (@pxref{Input Method Keyboard}) of -some groups. - -@item -Whether to show the context info for a character (@pxref{Info}). - -@item -The default @sc{ascii} representation of a character (@pxref{Ascii -Representation}). - -@item -When using Emacs/XEmacs with Mule support, the syntax of a character -(@pxref{Syntax,,,@value{emacs},@value{emacsman}}). -@end itemize - -The character group is independent from any token language, but is -probably somewhat related to some of its @dfn{token classes}. For each -token language, each character is assigned to a list of token classes, -which can be used for the following: - -@itemize @bullet -@item -Information in the echo area (@pxref{Info}), it could inform users to -include a specific La@TeX{} package when they want to use that character -in the document. - -@item -Using a @dfn{coloring scheme} when displaying the characters in the echo -area (@pxref{Info}) or the Grid of characters (@pxref{Input Method -Grid}), useful for characters which can just be used in a specific -context, like @TeX{}'s math-mode characters. - -@item -Restricting the ``electricity'' of input method Electric (@pxref{Input -Method Electric}), useful to disable this input methods for @TeX{}'s -math-mode characters if we are in text-mode. -@end itemize - -The token classes for individual token languages are explained in the -corresponding sections of chapter @ref{Supported Languages}: - -@vtable @code -@item x-symbol-@var{lang}-header-groups-alist -The Grid and Menu headers for each token language @var{lang}. - -@item x-symbol-@var{lang}-class-alist -Strings for the character info in the echo area for each token language -@var{lang}. - -@item x-symbol-@var{lang}-class-face-alist -The coloring scheme for each token language @var{lang}. -@end vtable - -@c =========================================================================== - -@node Input Methods, Features, Concepts, Top -@comment node-name, next, previous, up -@chapter X-Symbol's Input Methods -@cindex Input Methods -@cindex Character Insertion - -An X-Symbol @dfn{input method} is a way, provided by package X-Symbol, -to insert a X-Symbol character (not in the sense of Mule's ``input -methods''). For a short overview with screenshots, see the -@uref{@value{http}/details.html, web pages of X-Symbol}. - -Input methods Token and Electric change the normal way to insert -characters a bit. Therefore, they require X-Symbol mode to be turned on -and can be turned off explicitly. The other input methods are provided -with additional commands and key prefixes, they can also be used in -buffers where X-Symbol mode is turned off. - -With Auc@TeX{}, Version 9.8a or higher, its math mode commands also -inserts X-Symbol characters -(@pxref{Mathematics,,,@value{auctex},@value{auctexman}}). - -@menu -* Introducing Input Methods:: Common behavior of all input methods. -* Input Method Token:: Replace token by character. -* Input Method Read Token:: Minibuffer input with completion. -* Input Method Menu:: Select a menu item. -* Input Method Grid:: Choose highlighted character. -* Input Method Keyboard:: Compose a key sequence. -* Input Method Context:: Replace character sequence. -* Input Method Electric:: Automatically replace character sequence. -* Input Method Quail:: A Mule input method "x-symbol". -* Customizing Input Method:: How to customize the input methods. -@end menu - -@c =========================================================================== - -@node Introducing Input Methods, Input Method Token, Input Methods, Input Methods -@comment node-name, next, previous, up -@section Common Behavior of All Input Methods -@cindex Input Methods, General -@cindex Input Methods, Common -@cindex Input Methods, Standard -@cindex Valid Character -@cindex Allowed Character -@cindex Key Prefix -@cindex Prefix Argument -@cindex Prefix Key -@cindex Defined Character -@cindex Compose Key - -Input methods normally just inserts @dfn{valid characters} which are -those characters which have a useful representation in the file: - -@vtable @code -@item x-symbol-valid-charsym-function -When X-Symbol is turned off, a character is valid if it is an 8bit -character according to the value of @code{x-symbol-default-coding}. - -When X-Symbol is turned on, a character is valid if the characters could -be encoded to a token in language @code{x-symbol-language} (@pxref{Token -Language}). -@end vtable - -If a buffer is read-only (@pxref{Misc -Buffer,,,@value{emacs},@value{emacsman}}), most input methods push the -character to insert onto the kill ring instead. Typing @kbd{C-y} lets -you then insert the character -(@pxref{Yanking,,,@value{emacs},@value{emacsman}}). - -The input methods Keyboard, Menu and Grid (the character selection with -@kbd{@key{button2}}) have the same interpretation of the prefix -argument: - -@itemize @bullet -@item -With prefix argument @samp{0}, do not insert anything, just barf, if the -character is not valid. - -@item -With a positive prefix argument, insert a character that many times. -Barf, if the character is not valid. - -@item -With a negative prefix argument, insert a character as many times as -specified by the absolute value of the prefix argument. A character is -also inserted if it is not valid. - -@item -With one or more @kbd{C-u}s with no digits, insert the token of a -language to choose, including ``x-symbol charsym'' (@pxref{Pseudo -Language}). -@end itemize - -Many input commands of package X-Symbol uses the same key prefix in its -default binding: - -@vtable @code -@item x-symbol-compose-key -@kindex C-= -@kindex @key{multi-key} -By default, @kbd{C-=} is used as the key prefix. Under XEmacs/no-Mule, -you might want to use @kbd{@key{multi-key}} instead: - -@lisp -(unless (featurep 'mule) (setq x-symbol-compose-key '(multi-key))) -@end lisp - -@item x-symbol-auto-key-autoload -Set this to @code{nil}, if you do not want that pressing @kbd{C-=} -automatically initializes the input methods. -@end vtable - -@c =========================================================================== - -@node Input Method Token, Input Method Read Token, Introducing Input Methods, Input Methods -@comment node-name, next, previous, up -@section Input Method Token: Replace Token by Character -@cindex Input Method Token -@cindex Token, Input Method -@cindex Replace Token -@cindex Abbrev, Token @c pre-2.2 - -If X-Symbol mode is on, input method @dfn{Token} automatically replaces -the token by the corresponding character when inserting the next -character following the token (in some token languages you need the next -character to decide whether the token is completed) if it is valid. - -The token will be replaced only if the next character has been inserted -without prefix argument or with prefix argument 0 (@kbd{C-u 0}), the -latter will therefore just induce the replacement. - -Please note that the token is really replaced by the characters, it is -not just @code{font-lock} which highlights the token to look like a -character. - -You might want to press @kbd{C-/} or @kbd{C-x u} to undo the -replacement. Input method Token requires X-Symbol mode to be enabled, -it can be disabled (and re-enabled) by setting the following variable: - -@vtable @code -@item x-symbol-token-input -A boolean which can also be changed via the X-Symbol menu. -@end vtable - -Individual token language might slightly change the way input method -Token works exactly; from the predefined language, it is just @code{tex} -(@pxref{TeX Macro}). - -@c =========================================================================== - -@node Input Method Read Token, Input Method Menu, Input Method Token, Input Methods -@comment node-name, next, previous, up -@section Input Method Read Token: Minibuffer Completion -@cindex Input Method Read Token -@cindex Read Token, Input Method -@cindex Minibuffer Completion, Token - -You can insert a character by reading the corresponding token in the -minibuffer. You are offered completion over the known tokens -(@pxref{Completion,,,@value{emacs},@value{emacsman}}). - -@table @kbd -@item M-x x-symbol-read-token-direct -@itemx C-= @key{TAB} -@findex x-symbol-read-token-direct -@kindex C-= @key{TAB} -Insert character by selecting a token in the current token language -(even if X-Symbol mode is turned off) or an ``x-symbol charsym'' -(@pxref{Pseudo Language}). - -@item M-x x-symbol-read-token -@itemx C-= @key{RET} -@findex x-symbol-read-token -@kindex C-= @key{RET} -Insert character by first selecting the token language and then a token -in that language. -@end table - -Input method Read Token also works if X-Symbol mode is not enabled. It -uses the common interpretation of prefix arguments for X-Symbol insert -commands, see @ref{Introducing Input Methods}. - -@c =========================================================================== - -@node Input Method Menu, Input Method Grid, Input Method Read Token, Input Methods -@comment node-name, next, previous, up -@section Input Method Menu: Select a Menu Item -@cindex Input Method Menu -@cindex Menu, Input Method - -If X-Symbol mode is turned on, a @dfn{Menu} @code{X-Symbol} appears in -the menubar (@pxref{Minor Mode}). It also appears over non-highlighted -parts in the Grid and the Key Completions buffer (@pxref{Input Method -Grid}). The menu allows to change buffer-local and global variables -(some directly, some via package @code{custom}). It has a submenu with -the most interesting commands of package X-Symbol. - -The menu has submenus with commands to insert X-Symbol characters. The -submenu headers are the same as the headers in the Grid, see -@ref{Char Group}. The appearance of the menu can be customized: - -@vtable @code -@item x-symbol-local-menu -With a valid token language, the X-Symbol menu only contains insertion -commands for valid characters. The entries are mentioned and sorted -according to the token. Otherwise, the X-Symbol menu contains all -characters, the entries are mentioned according to their charsym name. - -@item x-symbol-menu-max-items -The submenus do not contain more than 30 insertion commands for X-Symbol -characters. A submenu is split if necessarily. -@end vtable - -Input method Menu also works if X-Symbol mode is not enabled. It uses -the common interpretation of prefix arguments for X-Symbol insert -commands, see @ref{Introducing Input Methods}. - -@c =========================================================================== - -@node Input Method Grid, Input Method Keyboard, Input Method Menu, Input Methods -@comment node-name, next, previous, up -@section Input Method Grid: Choose Highlighted Character -@cindex Input Method Grid -@cindex Grid, Input Method -@cindex Table of Characters -@cindex Highlighted Character - -Probably the easiest way to insert a character is by using a @dfn{Grid} -of characters: - -@table @kbd -@item M-x x-symbol-grid -@itemx C-= C-= -@findex x-symbol-grid -@kindex C-= C-= -Pops up a buffer displaying X-Symbol characters in a grid like fashion. -You can select a character with the mouse or @kbd{@key{RET}}, see below. -@end table - -In the Grid buffer and the buffer with the possible completions for an -X-Symbol key sequence (@pxref{Input Method Keyboard}), the following -commands are used if the mouse pointer is over an highlighted character. - -@table @kbd -@item @key{button2} -@itemx @key{RET} -@itemx @key{SPC} -@c @itemx x-symbol-list-selected -@kindex @key{button2} -@kindex @key{RET} -@kindex @key{SPC} -@c @findex x-symbol-list-selected -Insert highlighted character (or character under point, respectively) -into the buffer of @code{point} if @code{point} is not in the same -buffer as the highlighted character. Otherwise, insert the character -into the reference buffer, i.e., the buffer where you have invoked the -grid or the key completions from. (The reference to the buffer is -erased when an X-Symbol character is inserted into any buffer.) - -@item @key{button3} -@kindex @key{button3} -Pops up a highlight menu where you can select to insert the token of -various token languages instead the character itself. In order not to -load and initialize all additional token language you have not yet used, -the menu offers to do so explicitly for supported (registered) token -languages (@pxref{Token Language}). -@end table - -Over all non-highlighted parts, the following commands are used: - -@table @kbd -@item @key{button2} -@kindex @key{button2} -@c @findex x-symbol-list-selected -Scroll Grid or Key Completions buffer down in upper half of the window -and scroll up in the lower half of the window. - -@item @key{button3} -@kindex @key{button3} -Pops up the X-Symbol menu, @ref{Input Method Menu}). -@end table - -When using the keyboard to select a character, the following command -could be useful: - -@table @kbd -@item M-x x-symbol-list-info -@itemx ? -@itemx h -@itemx i -@findex x-symbol-list-info -@kindex ? -@kindex h -@kindex i -Display info for character under point in echo area. - -@item M-x x-symbol-list-bury -@itemx q -@findex x-symbol-list-bury -@kindex q -Bury list buffer while trying to use the old window configuration. -@end table - -You can control the grid by the following variables: - -@vtable @code -@item x-symbol-local-grid -With a valid token language, the Grid only contains insertion commands -for valid characters and might use a coloring scheme. Otherwise, it -contains all characters. - -@item x-symbol-temp-grid -Inserting an X-Symbol character does not restore the window -configuration current before the invocation of the Grid. - -@item x-symbol-grid-reuse -Use old Grid when invoking command @code{x-symbol-grid}, if this is -reasonably to do. If @code{x-symbol-grid} is called with a prefix -argument, always create new Grid. - -@item x-symbol-grid-ignore-charsyms -The Grid does not contain @code{nobreakspace}. - -@item x-symbol-grid-tab-width -The tab width in the Grid buffer should correspond the font in -@code{x-symbol-heading-face} which is also used as the default font in -the Grid buffer. - -@item x-symbol-heading-strut-glyph -Use larger interline spacing if a line in the Grid starts with a header. -@end vtable - -The headers in the Grid are the same as the submenu headers, see -@ref{Char Group}. Similar looking characters for one headers are -grouped together. @xref{Input Method Context}. - -Input method Grid also works if X-Symbol mode is not enabled. It uses -the common interpretation of prefix arguments for X-Symbol insert -commands, see @ref{Introducing Input Methods}. - -@c =========================================================================== - -@node Input Method Keyboard, Input Method Context, Input Method Grid, Input Methods -@comment node-name, next, previous, up -@section Input Method Keyboard: Compose Key Sequence -@cindex Input Method Keyboard -@cindex Keyboard, Input Method - -Key sequences starting with @kbd{C-=} (@pxref{Introducing Input -Methods}) are used to insert X-Symbol characters, e.g., @kbd{C-= ~ >} -inserts @code{leadsto}. The Ascii sequence of the keys after @kbd{C-=} -look similar to the character which you are going to insert. It is the -same as the sequence which is replaced by input method Context, see -@ref{Input Method Context}. - -If many characters are represented by the same Ascii sequence, the -binding is extended by @samp{1}, @samp{2} and so on. If you do not know -how to continue your key sequence, the following commands might be -useful: - -@table @kbd -@item M-x x-symbol-help -@itemx C-= @var{zero-or-more-keys} @key{help} -@itemx C-= @var{zero-or-more-keys} C-h -@findex x-symbol-help -@kindex C-= @key{help} -@kindex C-= C-h -@kindex @key{help} -@kindex C-h -Pops up a buffer displaying possible completions for the key sequence -@kbd{C-= @var{zero-or-more-keys}}. You do not have to type the key -sequence again, i.e., @kbd{C-= @var{zero-or-more-keys}} is also used for -the next input. - -@item C-= @var{zero-or-more-keys} @key{button1} -@itemx C-= @var{zero-or-more-keys} @key{button2} -@itemx C-= @var{zero-or-more-keys} @key{button3} -@kindex @key{button1} -@kindex @key{button2} -@kindex @key{button3} -Use the normal bindings of @kbd{@key{button1}}, @kbd{@key{button2}} or -@kbd{@key{button3}}, respectively (@pxref{Input Method Grid}). The key sequence -is not used for the next input. - -@item C-= @var{zero-or-more-keys} M-@key{prior} -@itemx C-= @var{zero-or-more-keys} M-@key{next} -@itemx C-= @var{zero-or-more-keys} M-@key{home} -@itemx C-= @var{zero-or-more-keys} M-@key{end} -@kindex M-@key{prior} -@kindex M-@key{next} -@kindex M-@key{home} -@kindex M-@key{end} -Execute the commands @code{scroll-other-window-down}, -@code{scroll-other-window}, @code{beginning-of-buffer-other-window} or -@code{end-of-buffer-other-window}, respectively. You do not have to -type the key sequence again, i.e., @kbd{C-= @var{zero-or-more-keys}} is -also used for the next input. -@end table - -@vtable @code -@item x-symbol-temp-help -Inserting an X-Symbol character restores the window configuration -current before the invocation of the Grid. - -@item x-symbol-map-default-keys-alist -Defines the bindings mentioned above. -@end vtable - -Input method Keyboard also works if X-Symbol mode is not enabled. It -uses the common interpretation of prefix arguments for X-Symbol insert -commands, see @ref{Introducing Input Methods}. - -@c =========================================================================== - -@node Input Method Context, Input Method Electric, Input Method Keyboard, Input Methods -@comment node-name, next, previous, up -@section Input Method Context: Replace Char Sequence -@cindex Context, Input Method -@cindex Input Method Context -@cindex Character Sequence Input -@cindex Ascii Sequence Input -@cindex Modify Chain -@cindex Rotate Chain -@cindex Greek Input - -The idea of the input method @dfn{Context} is to replace a sequence of -characters by a character which looks similar to the whole sequence. If -the sequence consists only of Ascii characters, it is also used for the -key bindings, see @ref{Input Method Keyboard}. - -There will be some info in the echo area that the character sequence -before point can be replace via input method Context. The following -commands are provided: - -@table @kbd -@item M-x x-symbol-modify-key -@itemx C-, -@itemx C-= @key{left} -@itemx C-= @key{right} -@findex x-symbol-modify-key -@kindex C-, -@kindex C-= @key{left} -@kindex C-= @key{right} -If character before point is an X-Symbol character, ``modify'' it to an -alternative character (if you do it often enough, you are back at your -first character). Otherwise replace sequence of characters by a -character which looks similar to the whole sequence. - -@item M-x x-symbol-rotate-key -@itemx C-. -@itemx C-= @key{up} -@itemx C-= @key{down} -@findex x-symbol-rotate-key -@kindex C-. -@kindex C-= @key{up} -@kindex C-= @key{down} -If character before point is an X-Symbol character, ``rotate'' its -``direction'' (or change uppercase/lowercase). -@end table - -Both commands can also be used to resolve a character alias before -point, see @ref{Char Aliases}. If the region is active, restrict -replacement to use that region since the input method Context only -considers the longest sequence of characters with a replacement. - -Input method Context can be customized by changing the following -variables: - -@vtable @code -@item x-symbol-rotate-prefix-alist -If you provide a prefix argument to command @code{x-symbol-rotate-key}, -you can specify the direction you want to have: it is according to -numerical keypads, e.g., with prefix argument @samp{7} you specify the -direction ``north-west''. - -@item x-symbol-rotate-suffix-char -Command @code{x-symbol-rotate-key} is also used to ``Greekify'' the -previous character: typing @kbd{a C-.} is shorter than @kbd{a # C-,}. - -@item x-symbol-context-ignore -Constrains whether a context/charsym can be replaced. No constraints by -default. - -@item x-symbol-context-init-ignore -Contexts starting with a space cannot be replaced. This variable must -be set before X-Symbol has been initialized. -@end vtable - -@c =========================================================================== - -@node Input Method Electric, Input Method Quail, Input Method Context, Input Methods -@comment node-name, next, previous, up -@section Input Method Electric: Automatic Context -@cindex Input Method Electric -@cindex Electric, Input Method -@cindex Aggressive Context @c 2.6 -@cindex Automatic Context - -The idea of input method @dfn{Electric} is to have the input method -Context (@pxref{Input Method Context}) do its replacement automatically. -X-Symbol automatically replaces some character sequences of input method -Context by the X-Symbol character as soon as the last character in the -sequence of the sequence has been pressed. - -Input method Electric has nothing to do with the display of -super-/subscripts (@pxref{Super and Subscripts}). - -You might want to press @kbd{C-/} or @kbd{C-x u} to undo the -replacement. Input method Electric requires X-Symbol mode to be -enabled, it can be disabled (and re-enabled) by setting the following -variable: - -@vtable @code -@item x-symbol-electric-input -A boolean which can also be changed via the X-Symbol menu. -@end vtable - -To make input method Electric useful and not annoying, several -conditions must be met for X-Symbol to do the auto-replacement: - -@itemize @bullet -@item -Not all contexts will be replaced automatically. E.g., while input -method Context allows both pre- and postfixes for accented characters, -@kbd{:} and @kbd{'} only act as prefixes, and @kbd{`} and @kbd{~} only -as postfixes for input method Electric, since these are the combinations -where those characters are quite likely not used literally. - -@item -The character must be valid in the current token language, see -@ref{Introducing Input Methods}. - -@item -All characters of the context have been typed without any other command -in between, e.g., @kbd{- >} inserts @code{arrowright}, "- @key{left} -@key{right} > simply inserts @samp{->}. - -@item -No prefix argument has been used for any character in the context. - -@item -The electric context must not be a suffix of a longer valid context for -another character. E.g., @kbd{' ' o} does not insert -@samp{'@code{oacute}} because @samp{''o} is the context for -@code{ohungarumlaut} (which cannot be inserted by input method -Electric). - -@item -It should be ``allowed'' to change the context to the character via -input method Context. - -@item -Individual contexts/charsyms can be disabled by setting the following -variables: - -@vtable @code -@item x-symbol-electric-ignore -The context should neither be @samp{'s} (this would be annoying when -writing English), nor include a space. If you want to disable input -method Electric for all accented characters, use - -@lisp -(setq x-symbol-electric-ignore - "[ \t]\\|[A-Za-z][~`]\\|[:'][A-Za-z]") -@end lisp - -@item x-symbol-@var{lang}-electric-ignore -Individual contexts/charsyms can be disabled for each token language -@var{lang}. -@end vtable -@end itemize - -@c =========================================================================== - -@node Input Method Quail, Customizing Input Method, Input Method Electric, Input Methods -@comment node-name, next, previous, up -@section Input Method Quail: a Mule Input Method -@cindex Input Method Quail -@cindex Mule Input Method - -Another way to insert a characters is by using the Emacs/Mule -multilingual text input method ``x-symbol'' (@pxref{Input -Methods,,,@value{emacs},@value{emacsman}}).. - -Again, the Ascii sequence used there is the same as the sequence which -is replaced by input method Context, see @ref{Input Method Context}. A -one-letter key sequence is extended by @key{;}. - -If input method Quail is selected for a buffer, input method Electric -(@pxref{Input Method Electric}) is disabled in that buffer. - -@c TODO: more - -@c =========================================================================== - -@node Customizing Input Method, , Input Method Quail, Input Methods -@comment node-name, next, previous, up -@section Customizing Input Methods -@cindex Customizing Method Internals -@cindex Input Methods Customization - -You may safely define key bindings not using the @code{x-symbol-map} -(i.e., starting with @kbd{C-=}). E.g., for @code{alpha} on @kbd{A-a} , -use - -@lisp -(global-set-key [(alt a)] 'x-symbol-INSERT-alpha) -@end lisp - -Please note that the command @code{x-symbol-INSERT-alpha} is not defined -before the main file (@file{x-symbol}) in the package has been loaded -(if you really need it, function @code{autoload} is your friend). - -Other possibilities to customize the input methods are by setting the -following variables: - -@vtable @code -@item x-symbol-header-groups-alist -Defines the groups whose characters appear after that header in the Grid -and in submenus with that header. @xref{Char Group}. Extra variables -exists for the language dependent Grid and Menu. - -@item x-symbol-group-input-alist -@itemx x-symbol-user-table -These are variables which are used to compute the input definitions. -While this kind of indirection might seem complicated to you (it is), it -actually ensures consistency across all input methods. @xref{Defining -Input Methods}. - -For example., if you prefer charsym @code{epsilon1} over @code{epsilon} -(influences input method , -you might want to use: - -@lisp -@group -(setq x-symbol-user-table - '((epsilon1 t (greek1 "e" nil "epsilon") nil -3000))) -@end group -@end lisp - -@item x-symbol-list-mode-hook -Additional functions to execute after setting up the Grid and Key -Completions buffer. - -@item x-symbol-after-init-input-hook -You can change the input methods directly by functions in these hooks. -@end vtable - -@c =========================================================================== - -@node Features, Supported Languages, Input Methods, Top -@comment node-name, next, previous, up -@chapter Features of Package X-Symbol -@cindex Features of X-Symbol -@cindex Supported Features - -Package X-Symbol not only provides input methods for X-Symbol -characters, it also provides more features which support an easy and -comfortable preparation of documents. - -@menu -* Super and Subscripts:: Use special fonts for super-/subscripts. -* Images:: Images after image insertion commands. -* Info:: Display information in echo area. -* Ascii Representation:: Derive label from a buffer contents. -* Package Information:: Invoke info system, use WWW browser. -@end menu - -@c =========================================================================== - -@node Super and Subscripts, Images, Features, Features -@comment node-name, next, previous, up -@section Super- and Subscripts -@cindex Superscripts -@cindex Subscripts -@cindex Invisible, Revealing -@cindex Point, Invisible -@cindex Cursor, Invisible -@cindex Keywords for Subscripts - -Package X-Symbol displays the characters inside super-/subscript -commands in a way to make them look like super-/subscripts. It also -marks the super-/subscript command itself as invisible, so you don't see -it on the screen. For example, the three characters @samp{a^2} in the -buffer are @emph{displayed} as an @samp{a} and a raised, smaller -@samp{2}---the @samp{^} is still in the buffer. - -Therefore, the display of super- and subscripts has nothing to do with -Input Method Electric (@pxref{Input Method Electric}). - -Do not confuse the special Latin characters @code{twosuperior}, -@code{threesuperior}, @code{ordfeminine} and @code{masculine} with the -characters @samp{2}, @samp{3}, @samp{a} and @samp{o} when displayed as -superscripts. You might notice that the characters look a bit -different, but to help you seeing the difference, X-Symbol will display -an info in the echo area (@pxref{Info}) for the special Latin -characters when point is before or after the character in question. - -X-Symbol only displays the innermost super- and subscripts, since we -would need even more additional fonts otherwise. It is also restricted -to display single-line super- and subscripts. - -The display of super- and subscripts requires @code{font-lock} to be -enabled (@pxref{Role of font-lock}). - -Super- and subscripts are by default enabled if the they are defined for -the token language and it would be appropriate to turn on X-Symbol -automatically for the current buffer (@pxref{Minor Mode}). They can be -disabled (and re-enabled) by setting the following buffer-local -variable: - -@vtable @code -@item x-symbol-subscripts -A boolean which can also be changed via the X-Symbol menu. -@end vtable - -As mentioned before, X-Symbol marks the super-/subscript command itself -as invisible, except when point is directly before, inside or directly -after this command. During the time where this this is the case, -X-Symbol makes the super-/subscript command reappear and highlights it -with pink. This feature can be disabled (and re-enabled) by setting the -following variables: - -@vtable @code -@item x-symbol-reveal-invisible -A boolean which can also be changed via the X-Symbol menu. - -@item x-symbol-revealed-face -The face used for the super-/subscript command when revealed. - -@item x-symbol-idle-delay -Time in seconds of idle time before revealing invisible characters. -@end vtable - -Super-/subscript commands are @code{^}/@code{_} (@pxref{TeX Macro}) and -@code{<sup>}/@code{<sub>} (@pxref{SGML Entity}): - -@vtable @code -@item x-symbol-@var{lang}-font-lock-keywords -The super-/subscript @code{font-lock} keywords for each token language -@var{lang}. -@end vtable - -@c =========================================================================== - -@node Images, Info, Super and Subscripts, Features -@comment node-name, next, previous, up -@section Images at the end of Image Insertion Commands -@cindex Images -@cindex Glyphs - -@pindex convert -Package X-Symbol can display @dfn{images} at the end of image insertion -commands. They show a scaled-down version of the included image files -(using @code{convert}, @pxref{Installing Image Converter}). Using the -middle mouse button invokes the image editor for the image under the -mouse pointer. - -@menu -* Image Display:: When to display images. -* Image Conversion:: Producing a scaled-down image. -* Image Caching:: Speeding up the image processing. -* Special Images:: Signaling specific situations. -* Image Editor:: Editing the original image file. -@end menu - - -@node Image Display, Image Conversion, Images, Images -@comment node-name, next, previous, up -@subsection Display of Images -@cindex Image Display -@cindex Image Control -@cindex Image Commands -@cindex Controlling Images -@cindex Image Keywords -@cindex Keywords for Images - -The display of images is by default enabled if the image commands are -defined for the token language and it would be appropriate to turn on -X-Symbol automatically for the current buffer (@pxref{Minor Mode}). It -can be disabled (and re-enabled) by setting the following buffer-local -variable: - -@vtable @code -@item x-symbol-image -A boolean which can also be changed via the X-Symbol menu. -@end vtable - -Image commands are @code{\includegraphics} and others (@pxref{TeX -Macro}), and @code{<img>} (@pxref{SGML Entity}): - -@vtable @code -@item x-symbol-@var{lang}-image-keywords -The keywords (image commands & arguments) for each token language -@var{lang}. -@end vtable - -File names in the image commands must be interpreted correctly. They -can be: - -@itemize @minus -@item -@dfn{absolute}, start with @samp{/} or @samp{~}, -@item -@dfn{explicitly relative}, start with @samp{./} or @samp{../}, -@item -@dfn{implicitly relative}, assumed otherwise, e.g., @file{image.eps}, or -@item -special, like having some special URL prefix like @file{http:} or @file{ftp:}. -@end itemize - -Relative file names can be relative to some @dfn{master directory} -(usually the current directory of the file) or to directories in some -@dfn{search path} (only used with token language @code{tex}): - -@vtable @code -@item x-symbol-@var{lang}-master-directory -The master directory for each token language @var{lang}. - -@item x-symbol-@var{lang}-image-searchpath -The image search path for each token language @var{lang}. Defaults to -the current directory. - -@item x-symbol-image-searchpath-follow-symlink -Directories in the search path ending with @file{//} (double slash) are -recursive: all subdirectories not starting with a dot are also included -in the search path. If this variable has value @code{nil} (the -default), subdirectories which are symbolic links are not included. -@end vtable - -For details, see the section of the individual token languages -(@pxref{Supported Languages}). - - -@node Image Conversion, Image Caching, Image Display, Images -@comment node-name, next, previous, up -@subsection Image Conversion -@cindex Image Conversion -@cindex Converting Images -@cindex Colormap -@cindex Image Cache File - -The file mentioned inside the image insertion command is not used -directly to display the image after the command. The image might be too -big, it might use too many colors or the image format might not be -supported by Emacs. Therefore, it is converted to an @dfn{image cache -file}, see @ref{Image Caching}. - -@vtable @code -@item x-symbol-image-max-width -The image is not wider than 120 points. - -@item x-symbol-image-max-height -The image is not higher than 80 points. - -@item x-symbol-image-convert-colormap -Colormap used in function @code{x-symbol-image-convert-colormap} below. -A colormap is a normal image whose colors are the only ones used for -producing other images. The distribution of package X-Symbol includes -two colormaps: @file{etc/colormap138.xpm} and @file{etc/colormap66.xpm}. - -@item x-symbol-image-colormap-allocation -Package X-Symbol allocates the colors of the colormap at start-up and -prevents them to be de-allocated. - -@item x-symbol-image-converter -@pindex convert -Program @code{convert} from ImageMagick is used to convert the images -(@pxref{Installing Image Converter}). Set this variable to @code{nil}, -if you don't want to convert images. - -The following variables controls the invocation of the program -@code{convert} from ImageMagick: - -@vtable @code -@item x-symbol-image-convert-program -The name of the program @code{convert}, it is -@samp{C:\\ImageMagick\\convert} when running on MS-Windows and -@samp{convert} otherwise. - -@item x-symbol-image-convert-file-alist -Program @code{convert} needs to be told that @file{@var{file}.pstex} is -a Postscript file. -@end vtable - -The following functions are possible values in -@code{x-symbol-image-converter}: - -@ftable @code -@item x-symbol-image-start-convert-mono -Produces monochrome images. Used if your device has less than 32 -colors. - -@item x-symbol-image-start-convert-truecolor -Produce images with original colors. Used if your device has more than -767 colors. - -@item x-symbol-image-start-convert-color -Produce images with maximal four colors (just four because different -images might use a different sets of colors). Used otherwise without a -colormap. - -@item x-symbol-image-start-convert-colormap -Produce image with colors from the colormap. Used otherwise with a -colormap. - -@vtable @code -@item x-symbol-image-convert-mono-regexp -Function @code{x-symbol-image-start-convert-colormap} just produces -monochrome images for temporary image cache files (@pxref{Image -Caching}) since @code{convert} is slower when using a colormap. -@end vtable -@end ftable -@end vtable - - -@node Image Caching, Special Images, Image Conversion, Images -@comment node-name, next, previous, up -@subsection Image Caching -@cindex Image Caching -@cindex Caching of Images -@cindex Glyph Caching -@cindex Memory Cache for Images -@cindex File Cache for Images - -Editing would be extremely slow, if an image cache file would be -produced every time an image insertion command has been recognized. -Therefore, package X-Symbol uses the following techniques: - -@itemize @bullet -@item -It uses an asynchronous process to create the image cache file. You can -edit your file during the conversion. - -@item -It uses a @dfn{file cache}: image cache file can be kept for future -Emacs sessions. - -@item -It uses a @dfn{memory cache}: images from the most common file names are -cached in a buffer-local memory cache. The cached is initialized when -parsing the whole buffer for image keywords. Rescan the buffer if you -want to display the the images of new image files by using the following -command: - -@table @kbd -@item M-x x-symbol-image-parse-buffer -@findex x-symbol-image-parse-buffer -Parse the buffer to recognize image insertion commands. Usually, this -is done automatically. -@end table -@end itemize - -File and memory caching can be controlled by the following variables: - -@vtable @code -@item x-symbol-image-update-cache -The image cache is automatically updated if it does not exist yet or if it -is older than the corresponding image file. - -@item x-symbol-image-cache-directories -Cache files for images in your home directory are stored in directory -@file{~/.images/}, e.g., image @file{~/d/img.eps}, is cached in -@file{~/.images/d/img.png}. - -Images outside your home directory are just temporarily cached, or not -displayed at all if they cannot be stored in the memory cache. - -You could also specify that the cache files uses a relative -subdirectory, e.g., that @file{~/d/img.eps} is cached in -@file{~/d/.img/img.eps} or that the image is not displayed at all. - -@item x-symbol-image-temp-name -Temporary image files are stored in a temporary directory (@file{/tmp/}) -having some unique name. They are not supported on Emacs. - -@item x-symbol-image-use-remote -Package X-Symbol only displays images which can be stored in the memory -cache. With value @code{t}, it tries to find the image file during -editing (ignoring the search path for speed, though). Editing lines -with image files not in the memory cache would be slow, since file -accesses are necessary for every command. -@end vtable - -The memory cache only stored image file from the current directory or -some standard image directories like @file{figures/} (@pxref{TeX -Macro}), or @file{images/} or @file{pictures/} (@pxref{SGML Entity}). -Otherwise, the image file is considered similar to remote files: - -@vtable @code -@item x-symbol-@var{lang}-image-cached-dirs -The directories with images which are stored in the memory cache. Can -be separately defined for each token language @var{lang}. -@end vtable - - -@node Special Images, Image Editor, Image Caching, Images -@comment node-name, next, previous, up -@subsection Special Images for Specific Situations -@cindex Special Images -@cindex Images for Specific Situations -@cindex Glyph for Specific Situations - -If package X-Symbol cannot display images representing the included -image files, it uses special images instead: - -@itemize @bullet -@item -@dfn{Remote:} An Escher knot is displayed if the file is remote or if -the image cannot be cached in the memory cache, see @ref{Image Caching}. - -@item -@dfn{Junk}: A recycle sign is displayed if there is no image converter -(@pxref{Image Conversion}), if it should not use a file cache or if the -file cache cannot be written. - -@item -@dfn{Locked:} A terminal with a lock is displayed if the image cache file -cannot be read or written. - -@item -@dfn{Design:} An ink pen is displayed if the image file does not exist. - -@item -@dfn{Create:} An hour glass is displayed used during the creation of the -image cache file, an old image cache is used instead if it exists. - -@item -@dfn{Broken:} A tombstone is displayed if the creation of the image -cache file has failed. -@end itemize - -To customize the glyphs for the special images, use: - -@vtable @code -@item x-symbol-image-data-directory -Directory of files for the special images. - -@item x-symbol-image-special-glyphs -File names of special images and their image format. -@end vtable - - -@node Image Editor, , Special Images, Images -@comment node-name, next, previous, up -@subsection Image Editor -@cindex Image Editor -@cindex Editing Image Files -@cindex Designing Images -@cindex Scale Factor, Images -@cindex Image Highlight Menu - -If you move the mouse pointer to an image insertion command or its -image, it is highlighted. - -@table @kbd -@item @key{button2} -@kindex @key{button2} -Start image editor for highlighted image. If the image is searched in -the searchpath (@pxref{Image Caching}), edit first existing image file. -If no image exists, open a new file in the first directory of the -searchpath. - -@item @key{button3} -@kindex @key{button3} -Pop up the @dfn{image highlight menu}. You can rescan the buffer for -image insertion commands (@pxref{Image Display}). - -It also displays all directories in the searchpath if the file name is -implicitly relative, or the current directory otherwise. Selecting a -directory starts the image editor in that directory (relatively to that -directory if the file name has a directory part). - -@item M-x x-symbol-image-editor -@findex x-symbol-image-editor -Start image editor. Asks for the image file. -@end table - -You can control which editor to use: - -@vtable @code -@item x-symbol-image-editor-alist -@pindex display -@pindex xfig -Normally, program @code{display} is used to edit the highlighted image -file. But for image names @file{@var{file}.eps}, @file{@var{file}.ps} -or @file{@var{file}.pstex}, program @code{xfig} is invoked with -@file{@var{file}.fig}. It also uses a scale method, e.g., with -@file{img.80.eps}, we edit @file{img.fig} (which should be exported with -scale=80%). - -@item x-symbol-image-scale-method -If a scale method is used for a file name and the file name without -extension ends with a dot and two digits, these three characters are -removed from the file name. - -@item x-symbol-image-current-marker -Directories with an existing image for the specified file name are -marked with an @samp{*}. The first of these represents the file which -is used when pressing @kbd{@key{button2}}. -@end vtable - -@c =========================================================================== - -@node Info, Ascii Representation, Images, Features -@comment node-name, next, previous, up -@section Info in Echo Area -@cindex Info in Echo Area -@cindex Echo Area Info -@cindex Character Info -@cindex Context Info -@cindex Minibuffer Info - -The echo area (@pxref{Echo Area,,,@value{emacs},@value{emacsman}}) is -used by X-Symbol to give some information about the character around -point, and whether there is a context before point which can be replaced -by input method Context (@pxref{Input Method Context}). - -It will be controlled by the following variables (also to be found in -the menu): - -@vtable @code -@item x-symbol-character-info -A three-value variable which controls whether to display some info for -the character after or around point. The info for the character after -point includes the character itself and the following infos: - -@itemize @minus -@item -the token of the current language, eventually colored according to some -coloring scheme (@pxref{Char Group}), - -@item -infos using the token classes (@pxref{Char Group}), which could inform -users to include a specific La@TeX{} package when they want to use that -character in the document, - -@item -the codings in which the characters is considered to be a 8bit character -(@pxref{File Coding}), and - -@item -the key bindings (@pxref{Input Method Keyboard}). -@end itemize - -@item x-symbol-context-info -If X-Symbol mode is on and some conditions are met, display some info -for the character which would replace the context before point when -pressing @kbd{C-,} (@pxref{Input Method Context}). It can be controlled -by the following variables: - -@vtable @code -@item x-symbol-context-info-ignore -@findex x-symbol-default-context-info-ignore -The default value @code{x-symbol-default-context-info-ignore} makes the -following variables control whether to display the context info. - -@item x-symbol-context-info-threshold -The context does not consist of a single character. - -@item x-symbol-context-info-ignore-regexp -The context does not solely consist of letters. - -@item x-symbol-context-info-ignore-groups -The context is not replaced by an accented character, see @ref{Char -Group}. -@end vtable - -@item x-symbol-idle-delay -Time in seconds of idle time before showing the info. -@end vtable - -@c ==================================================================== - -@node Ascii Representation, Package Information, Info, Features -@comment node-name, next, previous, up -@section Ascii Representation of Strings -@cindex Ascii Representation -@cindex Representation of Characters -@cindex Label Creation - -@pindex reftex -If you want to derive labels from a buffer contents (provided e.g., by -Emacs packages @code{reftex} or @code{bibtex}), you need a Ascii -representation of strings containing X-Symbol characters. This is -provided by the following function: - -@ftable @code -@item x-symbol-translate-to-ascii -Takes a string and returns a string only consisting of Ascii characters. - -@vtable @code -@item x-symbol-charsym-ascii-alist -You might want to define the German way to Asciify accented characters -by: -@lisp -@group -(setq x-symbol-charsym-ascii-alist - '((adiaeresis . "ae") (Adiaeresis . "Ae") - (odiaeresis . "oe") (Odiaeresis . "Oe") - (udiaeresis . "ue") (Udiaeresis . "Ue"))) -@end group -@end lisp - -@item x-symbol-charsym-ascii-groups -By default, ``Ascii''fying accented characters means removing the -accents. Other characters have built-in Ascii representation, e.g, -@code{sigma1} has the Ascii representation @samp{sigma}. -@end vtable -@end ftable - -@c ==================================================================== - -@node Package Information, , Ascii Representation, Features -@comment node-name, next, previous, up -@section X-Symbol Package Information -@cindex Package Information -@cindex WWW Browsing -@cindex URL for X-Symbol - -@table @kbd -@item M-x x-symbol-package-info -@findex x-symbol-package-info -Read documentation for package X-Symbol in the info system. - -@item M-x x-symbol-package-web -@findex x-symbol-package-web -Ask a WWW browser to load the URL of package X-Symbol. - -@item M-x x-symbol-package-bug -@findex x-symbol-package-bug -Use this command to contact the maintainer of package X-Symbol @emph{in -any case}, e.g., for suggestions, bug and problem reports, see @ref{Bug -Reports}. Use @kbd{C-u 9 M-x x-symbol-package-bug} for patches -(including corrections of this manual, which are strongly appreciated) -and for other messages. -@end table - -@vtable @code -@item x-symbol-installer-address -E-mail address of the person who has installed package X-Symbol -system-wide (@pxref{System-wide Installation}). - -@item x-symbol-package-url -URL of package X-Symbol, used by @code{x-symbol-package-web}. -@end vtable - -@c ==================================================================== - -@node Supported Languages, X-Symbol Internals, Features, Top -@comment node-name, next, previous, up -@chapter Supported Token Languages -@cindex Supported Languages -@cindex Default Languages -@cindex Built-in Languages -@cindex Provided Languages -@cindex Languages in Distribution - -The chapter describe the predefined token language. It also presents -the language specific behavior for @ref{Concepts}, @ref{Input Methods}, -and @ref{Features}. - -@menu -* Pseudo Language:: Token language ``x-symbol charsym''. -* TeX Macro:: Token language @code{tex}. -* SGML Entity:: Token language @code{sgml}. -* BibTeX Macro:: Token language @code{bib}. -* TeXinfo Command:: Token language @code{texi}. -* External Languages:: Languages defined in other Emacs Packages. -@end menu - -@c ==================================================================== - -@node Pseudo Language, TeX Macro, Supported Languages, Supported Languages -@comment node-name, next, previous, up -@section Pseudo Token Language ``x-symbol charsym'' -@cindex Pseudo Language -@cindex Charsym -@cindex X-Symbol Charsym - -If no (or an invalid) token language is set for a buffer, the info in -the echo area (@pxref{Info}) for a X-Symbol Character in the buffer (if -it exists) uses the name of its @dfn{charsym}. In this manual, we -actually refer to X-Symbol characters by their charsym name, e.g., -@code{alpha}. - -A charsym is a symbol which is used internally to represent a X-Symbol -character. Charsyms are used instead characters in all user variables -of package X-Symbol. - -The highlight menu of the Grid (@pxref{Input Method Grid}) also offers -to insert a charsym name. Charsyms can also be used for input method -Read Token, see @ref{Input Method Read Token}. - -You cannot use this pseudo language to turn on the X-Symbol minor mode -(@pxref{Minor Mode}), you cannot decode charsyms to their characters, and -you cannot encode characters to charsyms. - -@c =========================================================================== - -@node TeX Macro, SGML Entity, Pseudo Language, Supported Languages -@comment node-name, next, previous, up -@section Token Language ``@TeX{} macro'' (@code{tex}) -@cindex Token Language @code{tex} -@cindex Language @code{tex} -@cindex @TeX{} macro -@cindex @code{tex} -@cindex La@TeX{} - -For buffers using the major mode @code{latex-mode}, @code{tex-mode} or -@code{plain-tex-mode}, we use token language @dfn{@TeX{} macro} -(@code{tex}). This language provides the display of super-/subscripts -and images. If the buffer visits a file with extension @file{.tex}, -X-Symbol mode is automatically turned on. - -@menu -* TeX Macro Basics:: Basics of language ``@TeX{} macro''. -* TeX Macro Features:: Super-/subscripts and images in La@TeX{}. -* TeX Macro Problems:: Problems with @TeX{} macros. -* TeX Macro Conversion:: How the conversion of @TeX{} macros works. -* TeX Macro Symbols:: Extra Symbols of Language ``@TeX{} Macro''. -@end menu - - -@node TeX Macro Basics, TeX Macro Features, TeX Macro, TeX Macro -@comment node-name, next, previous, up -@subsection Basics of Language ``@TeX{} macro'' -@cindex TeX Macro Basics -@cindex Basics TeX Macro -@cindex Choosing TeX Macro -@cindex TeX Macro Use -@cindex TeX Macro Modes - -The standard behavior can be controlled by the following variables: - -@vtable @code -@item x-symbol-tex-modes -@itemx x-symbol-tex-auto-style -The variables known from @ref{Minor Mode}. If the buffer visits a file -with extension @file{.tex}, super-/subscripts and images are displayed, -otherwise unique decoding (@pxref{Unique Decoding}) will be used. - -@item x-symbol-tex-auto-coding-alist -Used there to automatically deduce the specific encoding of the file -(@pxref{File Coding}) if the file visited by the buffer has the -extension @file{.tex}. It searches for one of the following two strings -in the current buffer, including the comment: - -@example -\usepackage[@var{encoding}]@{inputenc@} -%& -translation-file=i@var{enc} -@end example - -where @var{encoding} should be one of @samp{latin1}, @samp{latin2}, -@samp{latin3}, @samp{latin5}, or @samp{latin9}, and @var{enc} should be -one of @samp{l1} or @samp{l2}. 8bit characters are not encoded if the -file if the search was successful (@pxref{Controlling 8bit Coding}). - -@item x-symbol-tex-coding-master -@vindex TeX-master -If one of the above strings cannot be found in the current buffer, and -the current buffer has a buffer-local string value of @code{TeX-master}, -also search in the file denoted by that value for the strings. -(Buffer-local variables will not be inherited.) -@end vtable - -The input methods and the character info in the echo area are controlled -by: - -@vtable @code -@item x-symbol-tex-header-groups-alist -We use the standard Grid and Menu headers. - -@item x-symbol-tex-extra-menu-items -There is an extra menu item to remove the braces around text-mode -letters and other text-mode symbols. - -@item x-symbol-tex-electric-ignore -@itemx x-symbol-tex-electric-ignore-regexp -@pindex texmathp -Input method Electric (@pxref{Input Method Electric}) is disabled if the -character is not of the correct @TeX{} mode, i.e., it only produces a -math-mode character in a math area and a text-mode character in a text -area (this test requires package @code{texmathp}, @ref{LaTeX Packages}). -Postfix tilde is not electric, because @samp{~} produces a space in -@TeX{}. - -@item x-symbol-tex-token-suppress-space -Input method Token (@pxref{Input Method Token}) only converts a token -ending with a control word like @code{\i}, if the character following -the token is no letter. If that token is a text-mode token and a -@key{SPC} has been entered without a prefix argument, the @key{SPC} will -only perform the replacement, it will not insert a space, i.e., it will -act like @kbd{C-u 0 @key{SPC}}. - -@item x-symbol-tex-class-alist -@itemx x-symbol-tex-class-face-alist -Various token classes (@pxref{Char Group}) are defined. They are used -to give some info (@pxref{Info}) about the characters spacing behavior, -which La@TeX{} packages are necessary to use the character (@pxref{TeX -Macro Symbols}), and about the conversion (@pxref{TeX Macro -Conversion}). X-Symbol uses blue for text-mode only and purple for -math-mode only characters in the Grid (@pxref{Input Method Grid} and the -character info. -@end vtable - - -@node TeX Macro Features, TeX Macro Problems, TeX Macro Basics, TeX Macro -@comment node-name, next, previous, up -@subsection Super-/Subscripts and Images in La@TeX{} -@cindex TeX Macro Features -@cindex Features TeX Macro -@cindex TeX Macro Superscripts -@cindex TeX Macro Subscripts -@cindex TeX Macro Images - -The display of super- and subscripts (@pxref{Super and Subscripts}) is -controlled by: - -@vtable @code -@itemx x-symbol-tex-font-lock-limit-regexp -The superscript command @code{^} and the subscript command @code{_} is -recognized. The argument can be provided with and without braces. The -argument should not span more than one line and should not contain a -super-/subscript command. - -@item x-symbol-tex-font-lock-allowed-faces -The characters @samp{^} and @samp{_} are not always commands (@pxref{TeX -Macro Problems}), e.g., in the argument of @code{\ref}. X-Symbol uses -the usual syntax highlighting keywords to decide whether to recognize -these characters as super-/subscript commands: they are commands if they -are not highlighted or highlighted with the usual math-mode faces. - -This might lead to problems: @ref{FAQ No Subscripts}, @ref{FAQ Stupid -Subscripts}. Using @code{texmathp} (@pxref{LaTeX Packages}) has even -more problems: - -@itemize @minus -@item -The syntax highlighting (which is used for super-/subscripts) would be -much too slow. - -@item -With own La@TeX{} environments, you would need to customize -@code{texmathp}. - -@item -It is actually wrong: whether @samp{^} and @samp{_} are -super-/subscripts commands does not depend on whether we are in @TeX{}'s -math mode, it depends on its catcodes (which are changed by commands -like @code{\ref}). -@end itemize -@end vtable - -The display of images (@pxref{Images}) is controlled by: - -@vtable @code -@item x-symbol-tex-image-keywords -The following commands are recognized. Extension @var{ext} stands for -@file{eps} (which is the default extension for both versions of -@code{\includegraphics} if the extension is omitted there), @file{ps}, -@file{gif}, @file{png}, @file{jpeg}, @file{jpg}, or @file{pdf}. Options -@var{options} can be omitted with their surrounding brackets or -preceding comma, respectively. - -@example -\input@{@var{file}.pstex_t@} -\includegraphics[@var{options}][@var{options}]@{@var{file}.@var{ext}@} -\includegraphics*[@var{options}][@var{options}]@{@var{file}.@var{ext}@} -\epsfig@{file=@var{file}.@var{ext},@var{options}@} -\psfig@{file=@var{file}.@var{ext},@var{options}@} -\epsfbox[@var{options}]@{@var{file}.@var{ext}@} -\epsffile[@var{options}]@{@var{file}.@var{ext}@} -@end example - -@item x-symbol-tex-master-directory -@vindex TeX-master -Relative file names (@pxref{Image Display}, explicitly or implicitly) -are relative to the directory part of variable @code{TeX-master} if it -is buffer-local and a string. Otherwise, they are relative to the -directory of the current file. - -@item x-symbol-tex-image-searchpath -@vindex TEXPICTS -@vindex TEXINPUTS -Files with implicitly relative names are meant to be searched in a -search path. It defaults to the list of directories specified by the -environment variable @code{TEXPICTS} or @code{TEXINPUTS} (@pxref{TeX -environment variables,,,@value{kpathsea},@value{kpathseaman}}), -extended by @file{./} if necessary. - -Each directory in this list is used to expand the file name. The first -expansion naming a readable file is used. Relative directories in this -list are expanded in the master directory mentioned above. - -This mimics the standard behavior of @TeX{}, omitting the ``built-in'' -directories of the search path (@pxref{Path -sources,,,@value{kpathsea},@value{kpathseaman}}). - -@item x-symbol-tex-image-cached-dirs -The file name in the image command should not have a directory part or -the directory part should be @file{figures/} if the image should be -cached in the memory cache. -@end vtable - - -@node TeX Macro Problems, TeX Macro Conversion, TeX Macro Features, TeX Macro -@comment node-name, next, previous, up -@subsection Problems with @TeX{} Macros -@cindex TeX Macro Problems -@cindex Problems TeX Macro - -Like with other token languages, the conversion between characters and -@TeX{} macros induce the problem that we have two conflicting -requirements: we would like X-Symbol not to change the file when -visiting and saving a file, and we would like X-Symbol to use characters -for all corresponding macros. @xref{Unique Decoding}. - -The additional problem with @TeX{} macros is that there is no fixed and -simple definition of @TeX{} macros, and many users have their personal -@TeX{} style, while many users are probably not aware that the style -also influences @TeX{}'s typesetting: - -@itemize @bullet -@item -The tokens in @TeX{} are not ended by a dedicated character (like -@sc{sgml} entities are ended by @samp{;}). Instead, we need the next -char to decide whether a macro ends, which would be no problem if @TeX{} -would have a character which has no meaning except separating tokens -(like space in most programming languages). Unfortunately, this is not -the case: after an @dfn{control word} (an all-letter macro), a space has -no meaning, but it does produce a space in the output after characters -and other macros, except in math mode. - -During decoding, a text-mode control word has to be replaced either with -its trailing spaces or not be replaced at all. Since the number of -spaces can vary and X-Symbol does not remember the original @TeX{} -sequence of a character, X-Symbol would change the file if it would use -characters for all sequences. - -@item -During encoding, a space after a character in the buffer must produce a -space in the document output, since users normally do not care whether -the character is represented by a control word or not. Let us assume -that we (Bavarians) want to produce the output @samp{Ma@ss{}@ Bier}. -@ifinfo -In the info file, you will probably not see any 8bit characters (the -sharp @samp{s} is shown as @samp{@ss{}}). -@end ifinfo - -@itemize @minus -@item -Many people would use @samp{Ma\ss\@ Bier}. This is (almost ever) fine -in text mode, but a @samp{\@ } in math mode is not ignored (whereas the -spaces after characters are). If we have text- and math-mode control -word, we have a problem, since math-mode detection cannot work properly -without @TeX{} processing. - -@item -Many people would use @samp{Ma\ss@{@}@ Bier}. This has less problems and -is therefore used by X-Symbol. The @samp{@{@}} at the end of the control -word is not used if the character is not followed by a space, e.g., to -produce @samp{Stra@ss{}e}, we use @samp{Stra\ss@ e}. Consequently, -@samp{Ma\ss\@ Bier} in the file would be decoded to @samp{Ma@ss{}\@ Bier}, -which would be encoded to the original sequence in the file. - -@item -Some people would always use @samp{@{@}} after a text-mode control word, -even it is not followed by a space, like @samp{Stra\ss@{@}e}. This is -wrong, since it breaks ligatures and kerns. For example, compare the -output of @samp{\L@ V} with @samp{\L@{@}V} using @samp{T1} font encoding. - -@item -Up to Version 4.1, X-Symbol surrounded a text-mode control word with -braces, like @samp{Stra@{\ss@}e}. This was probably even worse than -always adding @samp{@{@}} at the end of the control word. It was used, -because it is required by Bib@TeX{} (@pxref{BibTeX Macro}). -Unfortunately, Bib@TeX{} sends this bad sequence directly to La@TeX{}, -but this has nothing to do with X-Symbol. -@end itemize - -@item -The accented characters are not represented by one tokens in @TeX{}. -Most people use @samp{\"a} to produce an @samp{@"a}, while some use -@samp{\"@{a@}}. X-Symbol uses the former, it does not even decode the -latter automatically. Up to Version 4.1, X-Symbol used @samp{@{\"a@}}, -having the same problems as using @samp{Stra@{\ss@}e}. - -@item -Around a dozen characters can be produced by more than one @TeX{} macro, -like @code{\neq} and @code{\ne}. Here, X-Symbol decodes both forms, -because it is probably a bad idea to redefine standard @TeX{} macros. -This will not be done with in style files (@pxref{Unique Decoding}). - -@item -In @TeX{}, you can change the lexer on the fly, i.e., in a strict sense, -any conversion is unsafe without @TeX{} processing. Since the most -likely change is to change the catcode of the character @samp{@@} to a -letter (used in La@TeX{}'s style files), this character is considered a -letter by X-Symbol. This means that although both @samp{\ss@ @@} and -@samp{\ss@@} usually produce the same output, only the first is decoded -to @samp{@ss{}@@}. - -@item -In @TeX{}, the definitions of macros can also change on the fly i.e., in -a strict sense, any conversion is unsafe without @TeX{} processing. -X-Symbol assumes that you do not do something like that except as done -by the standard La@TeX{} @code{\verb} command, and the @code{verbatim} -and @code{tabbing} environments. -@end itemize - - -@node TeX Macro Conversion, TeX Macro Symbols, TeX Macro Problems, TeX Macro -@comment node-name, next, previous, up -@subsection The Conversion of @TeX{} Macros -@cindex TeX Macro Conversion -@cindex Conversion of TeX Macros - -The @TeX{} macros for Latin characters are according to the La@TeX{} -package @file{inputenc.sty}, v0.97+. Package X-Symbol uses U00B5 for -@code{\mathmicro}, not for @code{\mu}, though! @xref{Wishlist LaTeX}. - -It is assumed that you do not redefine standard @TeX{} macros like -@code{\ne} (@pxref{TeX Macro Conversion}), if you do so, you should -better use unique decoding (@pxref{Unique Decoding}). - -The encoding of characters to @TeX{} macros works as follows: - -@itemize @bullet -@item -If the character is preceded by an odd number of backslashes, insert a -space before the character. - -@item -Accented characters are encoded without braces, e.g., we encode @samp{@,{c}} -to @samp{\c@ c}. Accents are encoded with braces, e.g., we use -@samp{\c@{@ @}} and @samp{\u@{@}}. -@end itemize - -Additionally, the encoding of characters to @TeX{} macros which are -@dfn{control words} (all-letter macros), or whose @TeX{} representation -ends with a control word (like @samp{\'\i}) works as follows: - -@itemize @bullet -@item -If the character is followed by a letter, replace the character by the -macro and insert a space. - -@item -If the macro is a text-mode macro and followed by one or more blanks, -replace the character and insert @samp{@{@}}. - -@item -Otherwise, just replace the character. -@end itemize - -The decoding of @TeX{} macros which are control words to characters -works as follows: - -@itemize @bullet -@item -If the macro is a text-mode macro and followed by @samp{@{@}} which is -followed by a blank, replace the macro and delete the braces. - -@item -If the macro is a text-mode macro and followed by one are more blanks, -we have the following rule: - -@itemize @minus -@item -If we have exactly one blank, the blank is a space, and it is not -followed by a @samp{%} (comment character), replace the macro by the -corresponding character and delete the space. (The character following -the space must be a letter with unique decoding, @ref{Unique Decoding}.) - -@item -Otherwise, do @emph{not decode} the macro! -@end itemize - -@item -Otherwise, just replace the macro. -@end itemize - -To clarify, @dfn{letter} means @samp{A}-@samp{Z}, @samp{a}-@samp{z}, or -@samp{@@}, @dfn{blank} means a space, newline or the end of the buffer -(therefore, the last character in the buffer is always followed by a -blank). - -There are three control words which are both text-mode and math mode -macros: @code{\ldots}, @code{\vdots}, and (by accident) @code{\angle}. -They are all treated like math-mode characters, but their minibuffer -info (@pxref{Info}) includes @samp{gobbles space} (spaces in the buffer -after the character have no impact on the document), - -Additionally, the following commands and environments are processed -during decoding (but we are just looking for strings, i.e., they are -also processed in comments): - -@vtable @code -@item x-symbol-tex-verb-delimiter-regexp -If the command @code{\verb} is found, its argument is not decoded if it -is delimited by one of the following characters: @samp{-}, @samp{!}, -@samp{#}, @samp{$}, @samp{&}, @samp{*}, @samp{+}, @samp{/}, @samp{=}, -@samp{?}, @samp{^}, @samp{|}, or @samp{!}. - -@item x-symbol-tex-env-verbatim-regexp -The contents of the @code{verbatim} environment is not decoded. To -produce accented characters inside this environment, use the La@TeX{} -package @file{inputenc.sty}. - -@c Inside @code{\hyphenation}@{@dots{}@}, you can only use Latin characters. - -@c David Kastrup: Wrong. inputenc.sty converts things like @"a into \"a -@c anyway (take a look into your table of contents file, xxx.toc, for -@c example). Both @"a and \"a will not work in hyphenation patterns when you -@c are using a font encoding without such a character (like the default OT1 -@c encoding), both @"a and \"a will work if something like -@c \usepackage[T1]{fontenc} is active. This holds for LaTeX; plain TeX is -@c not as sophisticated as to replace \"a with a single character when in -@c T1 encodings. - -@item x-symbol-tex-env-tabbing-regexp -Inside a @code{tabbing} environment, the macro sequences starting with -@samp{\`}, @samp{\'}, @samp{\=} and @samp{\-} are not decoded. It is -probably better (with or without X-Symbol) to use the La@TeX{} package -@file{inputenc.sty} or to the @code{Tabbing} environment, to be found in -the @sc{ctan} archives. -@end vtable - -During encoding, these commands and environments are not respected, -since it does not make any sense to have X-Symbol's private characters -in the @TeX{} file. - -@ifinfo -Final note: in the info file, you will probably not see any 8bit -characters. -@end ifinfo - -You might want change the conversion between characters and tokens in -language @code{tex} by changing: - -@vtable @code -@item x-symbol-tex-user-table -You can define you own tokens for X-Symbol characters. E.g., if you -like to have the command @code{\sqrt} represented by a character -(shadowing the entry for @code{\surd}), add the following to your -@file{~/.emacs}: - -@lisp -(setq x-symbol-tex-user-table '((radical (math special) "\\sqrt"))) -@end lisp -@end vtable - - -@node TeX Macro Symbols, , TeX Macro Conversion, TeX Macro -@comment node-name, next, previous, up -@subsection Extra Symbols of Language ``@TeX{} Macro'' -@cindex Extra Symbols for @TeX{} -@cindex Defining @code{tex} -@cindex Initializing @code{tex} -@cindex @TeX{} Macro Installation -@cindex Installing @code{tex} -@pindex @file{latexsym.sty} -@pindex @file{amssymb.sty} -@pindex @file{stmaryrd.sty} -@pindex @file{fontenc.sty} -@pindex @file{inputenc.sty} - -This section describes what you should put into your private style file -or your document if you want to use extra symbols, i.e., characters -whose info in the echo area (@pxref{Info}) contains s.th. like -@samp{@var{package}.sty} or @samp{user}. If you do not use the -corresponding characters, you do not have to do anything, of course. - -The @TeX{} macros @code{\Box}, @code{\Diamond}, @code{\leadsto}, -@code{\Join}, @code{\lhd}, @code{\mho}, @code{\rhd}, @code{\sqsupset}, -@code{\sqsubset}, @code{\unlhd}, @code{\unrhd}, are defined in La@TeX{} -package @file{latexsym.sty}: - -@example -\usepackage@{latexsym@} -@end example - -Note that these macros are also defined @file{amssymb.sty}. Since the -first four macros are defined differently (better) in -@file{latexsym.sty}, it does make sense to load both La@TeX{} packages. - -The @TeX{} macros @code{\boldsymbol}, @code{\circledast}, -@code{\circledcirc}, @code{\circleddash}, @code{\digamma}, -@code{\gtrapprox}, @code{\gtrsim}, @code{\lessapprox}, @code{\lesssim}, -@code{\triangleq}, @code{\varkappa} are defined in AMS La@TeX{} package -@file{amssymb.sty}: - -@example -\usepackage@{amssymb@} -@end example - -The @TeX{} macros @code{\bigsqcap}, @code{\llbracket}, -@code{\rrbracket}, @code{\llparenthesis}, @code{\rrparenthesis} are -defined in the La@TeX{} package @file{stmaryrd.sty}: - -@example -\usepackage@{stmaryrd@} -@end example - -The @TeX{} macros @code{\guilsinglleft}, @code{\guilsinglright}, -@code{\dj}, @code{\NG}, @code{\ng}, @code{\DH}, @code{\DJ}, @code{\dh}, -@code{\dj}, @code{\TH}, @code{\th}, @code{\guillemotleft}, -@code{\guillemotright} and the ogonek characters are only defined if -you use T1 font encoding: - -@example -\usepackage[T1]@{fontenc@} -@end example - -The @TeX{} macro @code{\mathmicro} for U00B5 can be defined by -(@pxref{Wishlist LaTeX}): - -@example -\let\mathmicro\mu -@end example - -You should define the following in your La@TeX{} file (if you use the -corresponding characters), the first can only be used with T1 font encoding. - -@example -\DeclareTextSymbol@{\textbackslash@}@{T1@}@{92@} -\newcommand@{\nsubset@}@{\not\subset@} -\newcommand@{\textflorin@}@{\textit@{f@}@} -\newcommand@{\setB@}@{@{\mathord@{\mathbb B@}@}@} -\newcommand@{\setC@}@{@{\mathord@{\mathbb C@}@}@} -\newcommand@{\setN@}@{@{\mathord@{\mathbb N@}@}@} -\newcommand@{\setQ@}@{@{\mathord@{\mathbb Q@}@}@} -\newcommand@{\setR@}@{@{\mathord@{\mathbb R@}@}@} -\newcommand@{\setZ@}@{@{\mathord@{\mathbb Z@}@}@} -\newcommand@{\coloncolon@}@{\mathrel@{::@}@} -@c \newcommand@{\lsemantics@}@{\mathopen@{\lbrack\mkern-3mu\lbrack@}@} -@c \newcommand@{\rsemantics@}@{\mathclose@{\rbrack\mkern-3mu\rbrack@}@} -@c \newcommand@{\lcata@}@{\mathopen@{(\mkern-3mu\mid@}@} -@c \newcommand@{\rcata@}@{\mathclose@{\mid\mkern-3mu)@}@} -@end example - -The @TeX{} macros @code{\textordfeminine}, @code{\textordmasculine}, -@code{\textdegree}, @code{\textonequarter}, @code{\textonehalf}, -@code{\textthreequarters}, @code{\mathonesuperior}, -@code{\mathtwosuperior}, @code{\maththreesuperior}, -@code{\textcopyright} are only defined when using La@TeX{} package -@file{inputenc.sty}: - -@example -\usepackage[latin1]@{inputenc@} -@end example - -The @TeX{} macros @code{\textcent}, @code{\textcurrency}, -@code{\textyen}, @code{\textbrokenbar}, @code{\textmalteseH}, -@code{\textmalteseh} are defined as not available in La@TeX{} package -@file{inputenc.sty}. @xref{Wishlist LaTeX}. If you use this package -and want to define these commands, use @code{\renewcommand} (or -@code{\def}) after, e.g.: - -@example -\usepackage[latin1]@{inputenc@} -\usepackage@{wasysym@} %% defines \cent, \currency, \brokenvert -\usepackage@{amssymb@} %% defines \yen -\renewcommand@{\textcent@}@{\cent@} -\renewcommand@{\textcurrency@}@{\currency@} -\renewcommand@{\textyen@}@{\yen@} -\renewcommand@{\textbrokenbar@}@{brokenvert@} -@end example - -@c =========================================================================== - -@node SGML Entity, BibTeX Macro, TeX Macro, Supported Languages -@comment node-name, next, previous, up -@section Token Language ``@sc{sgml} entity'' (@code{sgml}) -@cindex HTML -@cindex SGML entity -@cindex Token Language @code{sgml} -@cindex Language @code{sgml} -@pindex Netscape - -For buffers using the major mode @code{html-mode}, @code{hm--html-mode}, -@code{html-helper-mode}, @code{sgml-mode} or @code{xml-mode}, we use -token language @dfn{@sc{sgml} entity} (@code{sgml}). This language -provides the display of super-/subscripts and images. If the buffer -visits a file and uses a @sc{html} mode, X-Symbol mode is automatically -turned on. - -@menu -* SGML Entity Basics:: Basics of Language ``@sc{sgml} entity''. -* SGML Entity Features:: Super-/Subscripts and Images in @sc{html}. -* SGML Entity Conversion:: How the conversion of @sc{sgml} entities works. -@end menu - - -@node SGML Entity Basics, SGML Entity Features, SGML Entity, SGML Entity -@comment node-name, next, previous, up -@subsection Basics of Language ``@sc{sgml} entity'' -@cindex SGML Entity Basics -@cindex Basics SGML Entity -@cindex Choosing SGML Entity -@cindex SGML Entity Use -@cindex SGML Entity Modes - -The standard behavior can be controlled by the following variables: - -@vtable @code -@item x-symbol-sgml-modes -@itemx x-symbol-sgml-auto-style -The variables known from @ref{Minor Mode}. If the buffer uses a -@sc{html} mode, super-/subscripts and images are displayed, otherwise -unique decoding (@pxref{Unique Decoding}) will be used. - -@item x-symbol-sgml-auto-coding-alist -Used there to automatically deduce the specific encoding of the file -(@pxref{File Coding}). It searches for the following string in the -current buffer, including the comment: - -@example -<meta http-equiv="content-type" - content="text/html; charset=@var{encoding}"> -@end example - -where @var{encoding} should be one of @samp{iso-8859-1}, -@samp{iso-8859-2}, @samp{iso-8859-3}, @samp{iso-8859-9}, or -@samp{iso-8859-15}. 8bit characters are not encoded if the file if the -search was successful (@pxref{Controlling 8bit Coding}). -@end vtable - -The input methods and the character info in the echo area are controlled -by: - -@vtable @code -@item x-symbol-sgml-header-groups-alist -Defines the headers and their characters for the language specific Grid -and Menu. - -@item x-symbol-sgml-extra-menu-items -There are no special entries in the X-Symbol menu. - -@item x-symbol-sgml-electric-ignore -There is no additional constraint to the ones mentioned in @ref{Input -Method Electric}. - -@item x-symbol-sgml-class-alist -@itemx x-symbol-sgml-class-face-alist -Token classes (@pxref{Char Group}) are only used to define a coloring -scheme. X-Symbol uses dark orange or dark red for non-Latin-1 -characters in the Grid (@pxref{Input Method Grid} and the character info -(@pxref{Info}), dark red for characters without defined entity names in -@sc{html} (@pxref{SGML Entity Conversion}). -@end vtable - - -@node SGML Entity Features, SGML Entity Conversion, SGML Entity Basics, SGML Entity -@comment node-name, next, previous, up -@subsection Super-/Subscripts and Images in @sc{html} -@cindex SGML Entity Features -@cindex Features SGML Entity -@cindex SGML Entity Superscripts -@cindex SGML Entity Subscripts -@cindex SGML Entity Images - -The display of super- and subscripts (@pxref{Super and Subscripts}) is -controlled by: - -@vtable @code -@item x-symbol-sgml-font-lock-regexp -@itemx x-symbol-sgml-font-lock-limit-regexp -@itemx x-symbol-sgml-font-lock-alist -@itemx x-symbol-sgml-font-lock-contents-regexp -The superscript command @code{<sup>}@dots{}@code{</sup>} and the subscript -command @code{<sub>}@dots{}@code{</sub>} is recognized. The contents should -contain at least one character which is not a space or a -@code{nobreakspace}. -@end vtable - -The display of images (@pxref{Images}) is controlled by: - -@vtable @code -@item x-symbol-sgml-image-keywords -The following commands are recognized. Extension @var{ext} stands for -@file{gif}, @file{png}, @file{jpeg} or @file{jpg}. - -@example -<img @var{@dots{}} src="@var{file}.@var{ext}" @var{@dots{}}> -@end example - -@item x-symbol-sgml-master-directory -@itemx x-symbol-sgml-image-searchpath -Relative file names (@pxref{Image Display}) are relative to the -directory of the current file. - -@item x-symbol-sgml-image-file-truename-alist -The file name prefix @file{file:} is ignored. For any other file name -which starts with letters and then a colon, e.g., with @file{http:} or -@file{C:\} (which is no @sc{url} anyway), the image insertion command -will be skipped. By changing this variable, you could specify that the -prefix @file{http://www.fmi.uni-passau.de/~wedler/} corresponds to -@file{~/public_html/}. - -@item x-symbol-sgml-image-cached-dirs -The file name in the image command should not have a directory part or -the directory part should be @file{images/} or @file{pictures/} if the -image should be cached in the memory cache. -@end vtable - - -@node SGML Entity Conversion, , SGML Entity Features, SGML Entity -@comment node-name, next, previous, up -@subsection The Conversion of @sc{sgml} Entities -@cindex SGML Entity Conversion -@cindex Conversion of SGML Entities - -Most character entities of HTML-4.0 are supported, except the following: -uppercase Greek which look like uppercase Latin, ``markup-significant -and internationalization'' characters, and some quotes. See -@uref{http://www.w3.org/TR/REC-html40/sgml/entities.html}. - -By default, we encode to entity references like @code{&}, and decode -from both entity references and character references like @code{&}. -For Latin-N characters without defined entity names in @sc{html} (e.g. -@code{scedilla}), we can only use character references. - -Do not expect Netscape before v6 to display non-Latin-1 characters -correctly (this might work by specifying the charset UTF-8 and using -character references). - -You might want change the conversion between characters and tokens in -language @code{sgml} by changing: - -@vtable @code -@item x-symbol-sgml-token-list -@findex x-symbol-sgml-token-list-name -@findex x-symbol-sgml-token-list-code -@findex x-symbol-sgml-token-list-netscape -A symbol, which defines whether to use entity references, character -references, or entity references for Latin-1 characters and character -references for others. - -@item x-symbol-sgml-user-table -It is probably not a good idea to change the defined tokens (except via -the variable above), but you might want to add some definitions: - -@example -(setq x-symbol-sgml-user-table '((circ () 999 "&bcomp;"))) -@end example -@end vtable - -@c ==================================================================== - -@node BibTeX Macro, TeXinfo Command, SGML Entity, Supported Languages -@comment node-name, next, previous, up -@section Token Language ``Bib@TeX{} macro'' (@code{bib}) -@cindex Token Language @code{bib} -@cindex Language @code{bib} -@cindex Bib@TeX{} macro -@cindex @code{bib} -@cindex Bib@TeX{} - -For buffers using the major mode @code{bibtex-mode}, we use token -language @dfn{Bib@TeX{} macro} (@code{bib}). This language does not -provide the display of super-/subscripts and images. If the buffer -visits a file, X-Symbol mode is automatically turned on. It is -controlled by: - -@vtable @code -@item x-symbol-bib-modes -@itemx x-symbol-bib-auto-style -The variables known from @ref{Minor Mode}. There is no automatic -deduction of the file encoding, 8bit characters are usually encoded, and -there is usually no unique decoding. @xref{Conversion}. -@end vtable - -@pindex bibtex -The major difference between this language and the token language -@code{tex} is that the tokens for text-mode characters are most likely -enclosed by braces. This has some problems (@pxref{TeX Macro -Problems}), but is required by the program @code{bibtex}. - -The input methods and most features except super-/subscripts and images -work like in token language @code{tex} (@pxref{TeX Macro}): - -@vtable @code -@item x-symbol-bib-header-groups-alist -@itemx x-symbol-bib-electric-ignore -@itemx x-symbol-bib-class-alist -@itemx x-symbol-bib-class-face-alist -Like in @ref{TeX Macro Features}. - -@item x-symbol-bib-extra-menu-items -There are no special entries in the X-Symbol menu. -@end vtable - -You might want change the conversion between characters and tokens in -language @code{bib} by changing: - -@vtable @code -@item x-symbol-bib-user-table -@itemx x-symbol-tex-user-table -Use the former for @code{bib}-only changes, the latter also influences -the conversion with token language @code{tex}. -@end vtable - -@c ==================================================================== - -@node TeXinfo Command, External Languages, BibTeX Macro, Supported Languages -@comment node-name, next, previous, up -@section Token Language ``@TeX{}info command'' (@code{texi}) -@cindex Token Language @code{texi} -@cindex Language @code{texi} -@cindex @TeX{}info command -@cindex @code{texi} -@pindex texinfo -@pindex GNU texinfo - -For buffers using the major mode @code{texinfo-mode}, we use token -language @dfn{@TeX{}info command} (@code{texi}). This language does not -provide the display of super-/subscripts and images. If the buffer -visits a file, X-Symbol mode is automatically turned on. It is -controlled by: - -@vtable @code -@item x-symbol-texi-modes -@itemx x-symbol-texi-auto-style -The variables known from @ref{Minor Mode}. There is no automatic -deduction of the file encoding, 8bit characters are usually encoded, and -there is usually no unique decoding. @xref{Conversion}. -@end vtable - -With @code{x-symbol-8bits} having value @code{nil} (the default), it -might still happen that the saved file contains 8bit characters, since -token language @code{texi} does not define tokens for all characters in -the Latin charsets supported by X-Symbol. @xref{Controlling 8bit -Coding}. - -With @code{x-symbol-unique} having value @code{nil} (the default), we -have unique decoding anyway, since token language @code{texi} does only -define one token per character, i.e., the value is not important if -@code{x-symbol-8bits} is @code{nil}. @xref{Unique Decoding}. - -The input methods and the character info in the echo area are controlled -by: - -@vtable @code -@item x-symbol-texi-header-groups-alist -Defines the headers and their characters for the language specific Grid -and Menu. - -@item x-symbol-texi-extra-menu-items -There are no special entries in the X-Symbol menu. - -@item x-symbol-texi-electric-ignore -There is no additional constraint to the ones mentioned in @ref{Input -Method Electric}. - -@item x-symbol-texi-class-alist -@itemx x-symbol-texi-class-face-alist -Only a few token classes (@pxref{Char Group}) are defined, the most -interesting induces the character info (@pxref{Info}) to display -@samp{not as code} for @code{@@minus@{@}} (@code{@@minus@{@}} should not -used inside @code{@@code} and @code{@@example}). No coloring scheme is -defined. -@end vtable - -@pindex makeinfo -At least with @code{makeinfo-4.0}, you do not get accented characters in -the info file for the corresponding @TeX{}info commands in the -@file{.texi} file, the @sc{html} output might contain illegal -``@sc{sgml} entities'' like @code{&140;}. - -@pindex texi2html -At least with @code{texi2html-1.62}, you see accented characters in the -@sc{html} output for the corresponding @TeX{}info commands in the -@file{.texi} file, but the output might also contain illegal ``@sc{sgml} -entities'' like @code{&140;}. - -You might want change the conversion between characters and tokens in -language @code{texi} by changing: - -@vtable @code -@itemx x-symbol-texi-user-table -Extra entries for the conversion. -@end vtable - -@c ==================================================================== - -@node External Languages, , TeXinfo Command, Supported Languages -@comment node-name, next, previous, up -@section Languages Defined in Other Emacs Packages -@cindex Foreign Languages -@cindex External Languages -@cindex Other Languages - -It is no problem for other Emacs packages to define their own token -language (@pxref{Extending X-Symbol}). - -I know of the following package---please check its manual for details. - -@itemize @bullet -@item -@pindex ProofGeneral -@cindex Isabelle Symbol -Package @uref{http://www.proofgeneral.org/,ProofGeneral} defines token -language ``Isabelle symbol''. -@end itemize - -@c =========================================================================== - -@node X-Symbol Internals, Problems, Supported Languages, Top -@comment node-name, next, previous, up -@chapter X-Symbol Internals -@cindex Internals, X-Symbol -@cindex X-Symbol Internals - -This section is outdated, it currently describes Version 3.4.2 of X-Symbol. - -Package X-Symbol is distributed in two ways. End-users should use the -@emph{binary package} which contains pre-compiled files. X-Symbol -developers should use the @emph{source package} which contains some -additional files. - -@menu -* Char Representation:: How X-Symbol represents X-Symbol chars. -* Defining Charsets:: How X-Symbol defines additional chars. -* Defining Input Methods:: How X-Symbol defines the input methods. -* Extending X-Symbol:: How to add fonts and token languages. -* Various Internals:: How X-Symbol handles other aspects. -* Design Alternatives:: Why X-Symbol is not designed differently. -* Language Internals:: How X-Symbol handles languages. -* Misc Internals:: Various. TODO. -@end menu - -@c ==================================================================== - -@node Char Representation, Defining Charsets, X-Symbol Internals, X-Symbol Internals -@comment node-name, next, previous, up -@section Internal Representation of X-Symbol Characters -@cindex Charsym -@cindex Leading Character -@cindex Octet -@cindex Cstring -@cindex Mule Character - -As mentioned in @ref{Pseudo Language}, most functions do not operate -on X-Symbol characters directly, they use ``x-symbol charsyms''. These -charsyms have a symbol property @code{x-symbol-cstring} which points to -a string, called @dfn{cstring}, containing the X-Symbol character. - -@itemize @bullet -@item -Under Emacs and XEmacs/Mule, the string only contains the character -which is a normal Mule character created by @code{make-char}. - -@item -@pindex font-lock -Under XEmacs/no-Mule, the string only contains the 8bit character if the -X-Symbol character is a 8bit character according to -@code{x-symbol-default-coding} (@pxref{Default Coding}). Otherwise, the -string contains of a @dfn{leading character} (with range @samp{\200} to -@samp{\237}) and an @dfn{octet}. Package @code{font-lock} is used to -display them correctly as X-Symbol characters (@pxref{FAQ Strange -Chars}). E.g., with @samp{\251} is @code{copyright}, we get - -@lisp -(get 'Idotaccent 'x-symbol-cstring) - @result{} "\235\251" -@end lisp -@end itemize - -If the character is also a 8bit character in some encoding (@pxref{File -Coding}), the charsym also has the symbol property -@code{x-symbol-file-cstrings} for the representation in the file and -property @code{x-symbol-buffer-cstrings} to recognize character aliases -(@pxref{Char Aliases}). E.g., under XEmacs/no-Mule, with @samp{\335} is -@code{Yacute}, @samp{\251} is @code{copyright}, we get - -@lisp -(get 'Idotaccent 'x-symbol-file-cstrings) - @result{} (iso-8859-9 "\335" iso-8859-3 "\251") -(get 'Idotaccent 'x-symbol-buffer-cstrings) - @result{} (iso-8859-9 "\234\335" iso-8859-3 "\235\251") -@end lisp - -The values are plists (@pxref{Property Lists,,,lispref,XEmacs Lisp -Reference Manual}) mapping the file coding to the strings in the file or -the buffer, respectively. - -After token languages have been initialized, the charsym also has the -symbol properties @code{x-symbol-tokens} (@pxref{Token Language}) and -@code{x-symbol-classes} (@pxref{Char Group}): - -@lisp -(get 'Idotaccent 'x-symbol-tokens) - @result{} (sgml "İ" tex "@{\\.I@}") -(get 'Idotaccent 'x-symbol-classes) - @result{} (sgml (non-l1) tex (text aletter)) -@end lisp - -@c ==================================================================== - -@node Defining Charsets, Defining Input Methods, Char Representation, X-Symbol Internals -@comment node-name, next, previous, up -@section Defining X-Symbol Charsets -@cindex Cset -@cindex Charset -@cindex Final Byte - -An X-Symbol charset, called @dfn{cset} in the code and the docstrings, -handles one font used by package X-Symbol. Each cset must use the -same char registry@minus{}encoding as the corresponding variables for -the fonts (@pxref{Installing Fonts Lisp}). - -You have to tell X-Symbol, how to define Mule charsets with Emacs or -XEmacs/Mule and which leading character to use with XEmacs/no-Mule. As -an example, we use the definition of the Adobe symbol font. - -@lisp -@group -(defvar x-symbol-xsymb0-cset - '((("adobe-fontspecific") ?\233 -3600) - (xsymb0-left "X-Symbol characters 0, left" 94 ?:) . - (xsymb0-right "X-Symbol characters 0, right" 94 ?\;))) -@end group -@end lisp - -Mule charsets (@pxref{Charsets,,,lispref,XEmacs Lisp Reference Manual}) -may be used for 94 or 96 characters (this example: 94, only charset with -dimension 1 can be defined with X-Symbol). Thus, if your font provides -more characters, you are likely to use both the left and the right half -of the font to define two Mule charsets. For both of them, you have to -define a unique, free final character/byte of the standard ISO 2022 -escape sequence designating the charset (this example: @samp{:} and -@samp{;}). The remaining free (reserved by Emacs for users) are -@samp{>} and @samp{?}, the latter is already used in XEmacs. - -For XEmacs/no-Mule, you have to define the leading character (this -example: @samp{\233}). - -@vtable @code -@item x-symbol-latin1-cset -@itemx x-symbol-latin2-cset -@itemx x-symbol-latin3-cset -@itemx x-symbol-latin5-cset -Cset definitions only using the upper halves of the fonts where the -corresponding Mule charsets are known and which define characters which -are considered 8bit characters in the corresponding encoding, see -@ref{File Coding}. - -@item x-symbol-xsymb0-cset -@itemx x-symbol-xsymb1-cset -Cset definitions using both halves of the fonts where no corresponding -Mule charset are yet known. -@end vtable - -@c ==================================================================== - -@node Defining Input Methods, Extending X-Symbol, Defining Charsets, X-Symbol Internals -@comment node-name, next, previous, up -@section Defining Input Methods -@cindex Input Method Internals -@cindex Internals, Input Method -@cindex Defining Input Methods - -This is probably the hardest section in this manual@dots{}. - -@menu -* Input Method Objectives:: Input methods should be intuitive/consistent. -* Intro Char Descriptions:: An example introducing char descriptions. -* Char Descriptions:: The aspects and the contexts of a character. -* Example Char Descriptions:: A complete example defining input methods. -* Customizing Input Methods:: How to customize the input methods. -@end menu - - -@node Input Method Objectives, Intro Char Descriptions, Defining Input Methods, Defining Input Methods -@comment node-name, next, previous, up -@subsection Defining Input Methods: Objectives -@cindex Input Method Objectives -@cindex Objectives, Input Methods -@cindex Consistent Input Methods - -Input methods should be intuitive. This requires consistency: - -@itemize @bullet -@item -Characters should be found under the same header in the Grid and in the -Menu. - -@item -If one character can be modified or rotated to another character -(@pxref{Input Method Context}), both should stand near to each other in -the Grid. E.g., since @code{arrowsouthwest} rotates to -@code{arrowdown}, they stand next to each other. - -@item -The key binding should be similar to the context of input method -Context. If two characters are defined to have the same context, they -should have the same key prefix and the suffix should be a number which -increases with the ``modify-to'' behavior. E.g., @code{reflexsubset} -with key binding @kbd{C-= < _ 2} modifies to @code{reflexsqsubset} with -key binding @kbd{C-= < _ 3}. - -@item -Consistent definition of ``modify-to'' and ``rotate-to'': if A can be -modified to B and rotated to C and C can be modified to D, B can be -rotated to D in most cases. - -@item -It should be possible to load character definitions later on, e.g., when -new token languages get initialized. - -@itemize @minus -@item -Existing key bindings should not be overwritten. If some of them have to -change, it should be done in a uniform way (solution: key suffix -@samp{1}). - -@item -Also, modifying or rotating a new character to/from old ones should be -possible without changing the input definitions of the old characters. -@end itemize -@end itemize - -Observation: It is impossible, especially with the possibility to load -character definitions later on, to define the input methods directly, -i.e., by something like @code{define-key}. The solution is an indirect -definitions with ``character descriptions''. - - -@node Intro Char Descriptions, Char Descriptions, Input Method Objectives, Defining Input Methods -@comment node-name, next, previous, up -@subsection X-Symbol Character Descriptions: Example -@cindex Character Descriptions, Intro -@cindex Character Descriptions, Example - -As an example for ``character descriptions'', look at the definition of -@code{longarrowright} in @code{x-symbol-xsymb1-table} (@samp{95} is the -encoding in the font and not of interest here). Some terms are defined -in the next section: - -@lisp -@group -(longarrowright 95 - (arrow) (size big . arrowright) nil ("->" t "-->") (emdash)) -@end group -@end lisp - -With this definition, package X-Symbol automatically defines: - -@itemize @bullet -@item -Key bindings @kbd{C-= - - >} and @kbd{C-= - > 2}, the latter has suffix -2, because @kbd{C-= - >} is also ``wanted'' by @code{arrowright} which -now has the key binding @kbd{C-= - > 1} (the ``score'' of -@code{longarrowright} is higher, due to @samp{size big}). @xref{Input -Method Keyboard}. - -@item -@code{arrowright} modifies to @code{longarrowright}, which modifies to -@code{arrowright}. @xref{Input Method Context}. - -@item -@code{longarrowleft} rotates to @code{longarrowright}, which rotates to -@code{longarrowboth} (which rotates to @code{longarrowleft}). (The -``rotate aspects'' are inherited from @code{arrowright}.) @xref{Input -Method Context}. - -@item -The following contexts can be modified to @code{longarrowright}: -@samp{-->} or @code{minus1} / @code{endash} / @code{macron} / -@code{emdash} / @code{hyphen} and @samp{->} (since all define context -@samp{-}) and @code{emdash} and @samp{>} (since @code{emdash} defines -context @samp{--}). @samp{->} is used for @code{arrowright}, which has -a lower score, see above. @xref{Input Method Context}. - -@item -Input method Electric will change context @samp{-->} (is tagged with -@code{t} in the definition) to @code{longarrowright}, also @code{emdash} -and @samp{>} (only theoretically, since input method Electric will -produce @code{emdash} only in @TeX{}'s text mode, and -@code{longarrowright} only in @TeX{}'s math mode). @xref{Input Method -Electric}. - -@item -The character will appear in the Grid under the header @samp{Arrow}. -You will probably recognize that the placement is based on the modify-to -and rotate-to behavior above. @xref{Input Method Grid}. - -@item -The character will appear in the Menu under one of the headers -@samp{Arrow @var{n}}". The submenus are sorted alphabetically. -@xref{Input Method Menu}. -@end itemize - -Consider that this character would be missing in package X-Symbol and -you want to define your own character (in your own font). With the -current scheme, the one line above is enough! Have fun defining all the -consequences directly instead@dots{}. - - -@node Char Descriptions, Example Char Descriptions, Intro Char Descriptions, Defining Input Methods -@comment node-name, next, previous, up -@subsection Defining Input Methods by Character Descriptions -@cindex Character Descriptions -@cindex Aspects of Characters -@cindex Parent Character -@cindex Component of Characters -@cindex Modify Scores -@cindex Rotate Scores -@cindex Modify Aspects -@cindex Rotate Aspects -@cindex Score of a Character -@cindex Modify Chain -@cindex Exclusive Modify Chain -@cindex Rotate Chain -@cindex Horizontal Chain -@cindex Key Chain - -Characters are defined with @dfn{character descriptions} which consist -of different @dfn{aspects} and @dfn{contexts}, which can also be -inherited from a @dfn{parent} character. All characters which are -connected with parents, form a @dfn{component}. Aspects and contexts -are used to determine the modify-to and rotate-to chain for characters, -the contexts for input method Context and Electric, the key bindings, -and the position in the Menu and the Grid. - -If you want to check the component, scores, etc of a specific character, -look at the symbol property (e.g., with @kbd{M-x hyper-apropos-get-doc}) -of the corresponding charsym, e.g., @code{arrowright}. See also the -docstrings of @code{x-symbol-init-cset} and @code{x-symbol-init-input}. - -Remember, all characters which are connected with parents, form a -component. @dfn{Contexts} are the contexts of input method Context -(@pxref{Input Method Context}). If a table entry of a charsym does not -define its own contexts, they are the same as the contexts of the -charsym in an earlier position in the modify chain (see below), or the -contexts of the first charsym with defined contexts in the modify chain. -The @dfn{modify context} of a charsym is the first context. - -@vtable @code -@item x-symbol-rotate-aspects-alist -Characters in the same component whose aspects only differ by their -@code{direction} (@code{east},@dots{}), a key in this alist, are -circularly connected by ``rotate-to''. The sequence in the @dfn{rotate -chain} is determined by @dfn{rotate scores} depending on the values in -the @dfn{rotate aspects}. Charsyms with the same ``rotate-aspects'' are -not connected (charsyms with the smallest modify scores are preferred). - -@lisp -(get 'longarrowright 'x-symbol-rotate-aspects) - @result{} (-1500 direction east) -@end lisp - -@item x-symbol-modify-aspects-alist -Characters in the same components whose aspects only differ by their -@code{size} (@code{big},@dots{}), @code{shape} (@code{round}, -@code{square}@dots{}) and/or @code{shift} (@code{up}, -@code{down},@dots{}), keys in this alist, are circularly connected by -``modify-to'', if all their modify contexts are used exclusively, i.e., -no other modify chain uses any of them. The sequence in the @dfn{modify -chain} is determined by @dfn{modify scores} depending on the values in -the @dfn{modify aspects}, the charsym score defined in the definition -tables and the score of the whole cset (@pxref{Defining Charsets}). - -@lisp -(get 'longarrowright 'x-symbol-score) - @result{} -3500 -(get 'longarrowright 'x-symbol-modify-aspects) - @result{} (1500 shift nil shape nil size big) -@end lisp - -Otherwise, the ``modify chain'' is divided into modify subchains, which -are those charsyms sharing the same modify context. All modify -subchains using the same modify context, build a @dfn{horizontal chain} -whose charsyms are circularly connected by ``modify-to''. - -We build a @dfn{key chain} for all contexts (not just modify contexts), -consisting of all charsyms (sorted according to modify scores) having -the context. Input method Context modifies the context to the first -charsym in the key chain. - -@item x-symbol-key-suffix-string -If there is only one charsym in the key chain, @kbd{C-=} plus the -context inserts the charsym. Otherwise, we determine a suffix for each -charsym in the key chain by its index and this string. @kbd{C-=} plus -the context plus the suffix inserts the charsym. -@end vtable - - -@node Example Char Descriptions, Customizing Input Methods, Char Descriptions, Defining Input Methods -@comment node-name, next, previous, up -@subsection Defining Input Methods: Example -@cindex Character Descriptions, Example - -@smallexample -An example: Modify Modify Rotate Rotate Modify Other - Score Aspect Score Aspect Context Contexts --------------------------------------------------------------- -charsym 1w 150 nil 100 west `a' `c' -charsym 2w 200 nil 100 west `b' - -charsym 3w 350 big 100 west (`b') (-) -charsym 1e 100 nil 200 east (`a') (`b') -charsym 2e 250 big 200 east `a' `b' -charsym 3e 300 big 200 east `a' - -charsym 1n 100 nil 300 north `d' `c' -charsym 2n 200 big 300 north `c' - -@end smallexample - -Assuming that all charsyms form one component, we have: - -@smallexample -Rotate chains: (1w,2w)-1e-1n @r{and} 3w-(2e,3e)-2n. -Modify chains: 1w-2w-3w @r{and} 1e-2w-3w and 1n-2n. -Horizontal chains: 1e-1w-2e-3e @r{(for modify context @samp{a})} - 2w-3w @r{(for modify context @samp{b})} -Key chains: 1e-1w-2e-3e @r{(for context @samp{a})} - 1e-2w-2e-3w @r{(for context @samp{b})} - 1n-1w-2n @r{(for context @samp{c})} - 1n @r{(for context @samp{d})} -@end smallexample - -That makes the following bindings: - -@smallexample -Rotate-to: 1w->1e, 2w->1e, 1e->1n, 1n->1w - 3w->2e, 2e->2n, 3e->2n, 2n->3w -Modify-to: 1e->1w, 1w->2e, 2e->3e, 3e->1e @r{(horizontal chain)} - 2w->3w, 3w->2w @r{(horizontal chain)} - 1n->2n, 2n->1n @r{(modify chain with exclusive modify contexts)} -CONTEXTS: `a'->1e, `b'->1e, `c'->1n, `d'->1n -KEY: `a1'=1e, `a2'=1w, `a3'=2e, `a4'=3e, `b1'=1e, ..., `d'=1n -@end smallexample - - -@node Customizing Input Methods, , Example Char Descriptions, Defining Input Methods -@comment node-name, next, previous, up -@subsection Customizing Input Methods -@cindex Customizing Input Methods -@cindex Input Methods Customization - -When defining contexts for characters, you should try to use default -contexts to make them and key bindings as consistent as possible. E.g., -package X-Symbol only defines explicit contexts for 186 of the 437 -characters. - -@vtable @code -@item x-symbol-group-input-alist -Defines default scores and bindings for characters of a group -(@pxref{Char Group}). E.g., the definition (in -@code{x-symbol-latin1-table}) - -@lisp -(aacute 225 (acute "a" Aacute)) -@end lisp - -defines @code{aacute} without any explicit contexts, but having the -group @code{acute} and the subgroup @samp{a}. The default input for the -group is defined by the following element in this variable: - -@lisp -(acute 0 "%s'" t "'%s") -@end lisp - -That means: 0 is added to the normal ``modify-score'' of the character. -@samp{%s'} and @samp{'%s} with @samp{%s} substituted by the subgroup, -i.e., @samp{a'} and @samp{'a}, are the contexts for @code{aacute}. The -context @samp{'a} is also used for input method Electric since it is -prefixed by @code{t}. - -@item x-symbol-key-min-length -It is quite unlikely that a one-character context is not the prefix of -another context, at least when loading additional font definitions. In -order not to have to change key bindings @kbd{C-= @var{key}} to @kbd{C-= -@var{key} 1}, it is required that the length of the key binding without -@kbd{C-=} is at least 2. -@end vtable - -@c ==================================================================== - -@node Extending X-Symbol, Various Internals, Defining Input Methods, X-Symbol Internals -@comment node-name, next, previous, up -@section Extending Package X-Symbol -@cindex Extending X-Symbol - -In this section, you are told what to consider and what to do when -extending package X-Symbol with new characters and new token languages. -If you only want to define a token language using existing characters, -you only have to read the last section. - -@menu -* Extending with Fonts:: How to add fonts to X-Symbol. -* Input Definitions:: Guidelines for input definitions. -* Font Definition File:: How to define new character in a file. -* Language Extension File:: Extending an existing language. -* Language Definition File:: Defining a new language. -@end menu - - -@node Extending with Fonts, Input Definitions, Extending X-Symbol, Extending X-Symbol -@comment node-name, next, previous, up -@subsection Extending X-Symbol with New Fonts -@cindex Extending with Fonts -@cindex Adding Fonts -@cindex Font Extension -@cindex Guidelines, Font Extension - -If you add a new token language to package X-Symbol which should -represent tokens by characters which are not yet defined by package -X-Symbol, you have to add a new font to package X-Symbol, first. - -When adding new fonts to package X-Symbol, consider that X-Symbol has to -run under Emacs, XEmacs/Mule and XEmacs/no-Mule. - -Running under Emacs and XEmacs/Mule requires that you cannot use all -encodings in a font for characters: you should probably only use -encodings 33 to 126 and 160 to 255. You should also use a unique pair -of charset properties @samp{CHARSET_REGISTRY} and -@samp{CHARSET_ENCODING}. - -Running under XEmacs/no-Mule can leads to problems when major modes do -not check whether the previous character is an escape character (in our -case, a leading character, @pxref{Char Representation}) when looking at a -character. Thus, you should probably not use encodings which represent -characters in your default font with a special syntax. - -@itemize @bullet -@item -In La@TeX{} buffers, characters in @samp{$%\@{@}} have a special -syntax. Thus, you should you should probably not use encodings 36, 37, -92, 123 and 125 for characters which could also be useful with token -languages @code{tex} and @code{utex}. - -@item -In HTML buffers, characters in @samp{&<>} have a special syntax. Thus, -you should you should probably not use encodings 38, 60 and 62 for -characters which could also be useful with token language @code{sgml}. -@end itemize - -You have to tell package X-Symbol which fonts to use for the normal -text, subscripts and superscripts. @xref{Installing Fonts Lisp}. - -You have to tell X-Symbol, how to define Mule charsets with Emacs and -XEmacs/Mule and which leading character to use with XEmacs/no-Mule. -@xref{Defining Charsets}. - - -@node Input Definitions, Font Definition File, Extending with Fonts, Extending X-Symbol -@comment node-name, next, previous, up -@subsection Guidelines for Input Definitions -@cindex Input Definitions, Guidelines -@cindex Guidelines, Input Definitions - -Read section @ref{Defining Input Methods}. Look at the tables in -@file{x-symbol.el}. Here are some guidelines of how to define the input -methods for new characters: - -@enumerate -@item -Define reasonable character groups for new characters, see @ref{Char -Group}. E.g., if you add the IPA font for phonetic characters, you -are likely to define at least one additional charset group. If you do -not know whether to use one or two groups for a set of characters, use -two. - -@item -Define under which Grid/Menu header the character of the new character -group should appear. You may also want to add additional headers for -these characters. @xref{Char Group}. - -@item -If reasonable, define default contexts for characters of a group, see -@ref{Customizing Input Methods}. - -@item -For the other characters, define contexts by Ascii sequences which look -similar to the character. - -@item -Form a component for a set of characters which are strongly related to -each other. In most cases, characters of a component are in the same -group but not vice versa. E.g., the simple arrows already defined by -package X-Symbol form one component. You form a component of characters -by specifying parents in their definition, see @ref{Char Descriptions}. - -@item -Use aspects to describe the new characters. Add new aspects to -@code{x-symbol-modify-aspects-alist} and -@code{x-symbol-rotate-aspects-alist} if necessary (@pxref{Char -Descriptions}). - -@item -Finish the definition of your font file (@pxref{Font Definition File}), -load it with @kbd{M-x load-file}, and initialize the input methods, -e.g., by invoking the grid (@kbd{M-x x-symbol-grid}). - -@item -If there are no errors, you are likely to get warnings about equal -modify scores. In this case, the sequence of characters in the -modify-to chain is random, so are the numerical suffixes of key bindings. - -@enumerate a -@item -Define a base score for the whole X-Symbol charset (``cset score'') -which should be a positive number in order not to change the key bindings -of previously defined X-Symbol characters. - -@item -Define reasonable scores for newly defined aspects and character groups. - -@item -Finally, fine-tune your definitions by charsym scores in the tables. -This should be necessary only for a few characters. -@end enumerate -@end enumerate - - -@node Font Definition File, Language Extension File, Input Definitions, Extending X-Symbol -@comment node-name, next, previous, up -@subsection Elisp File Defining a New Font -@cindex Font Definition File - -Now put all things together in a separate font definition file. You -should not put it in a language definition file. - -Here is a tiny example using only the lower half of the font: - -@lisp -(provide 'x-symbol-myfont) -@group -(defvar x-symbol-myfont-fonts - '(("-xsymb-myfont-medium-r-normal--14-140-75-75-p-85-xsymb-myfont") - ("-xsymb-myfont_sub-medium-r-normal--12-120-75-75-p-74-xsymb-myfont") - ("-xsymb-myfont_sup-medium-r-normal--12-120-75-75-p-74-xsymb-myfont"))) -@end group -@group -(defvar x-symbol-myfont-cset - '((("xsymb-myfont") ?\200 1000) - (myfont-left "My font characters, left" 94 63) . nil)) -@end group -@end lisp - -@lisp -@group -(defvar x-symbol-myfont-table - '((longarrownortheast 33 (arrow) (size big . arrownortheast)) - (koerper 34 (setsymbol "K")) - (circleS 35 (symbol "S") nil nil "SO"))) -@end group -@group -(x-symbol-init-cset x-symbol-myfont-cset x-symbol-myfont-fonts - x-symbol-myfont-table) -@end group -@end lisp - -Due to an XEmacs bug with char syntax @code{inherit}, you should also -add the following line to files @file{x-symbol-xmas20.el} and -@file{x-symbol-xmas21.el}: - -@lisp - (modify-syntax-entry ?\200 "\\" (standard-syntax-table)) -@end lisp - - -@node Language Extension File, Language Definition File, Font Definition File, Extending X-Symbol -@comment node-name, next, previous, up -@subsection Elisp File Extending a Token Language -@cindex Language Definition File - -If you want to use the new font to extend an existing token language, -define a new token language which inherits most variables from the -``parent language''. E.g., token language @code{utex} inherits most -variables from @code{tex}, see @file{x-symbol-utex.el}. - -A language must define variables for all language aspects, see -@ref{Language Internals}. Our example defines a language @code{mytex} -using the additional characters from @ref{Font Definition File}. - -First, you have to register the language in a startup file: - -@lisp -(defvar x-symbol-mytex-name "My TeX macro") -(defvar x-symbol-mytex-modes nil) -(x-symbol-register-language 'mytex 'x-symbol-mytex x-symbol-mytex-modes) -@end lisp - -The language definition file should look like (leaving out most parts -which are similar to the ones in @file{x-symbol-utex.el}): - -@lisp -(provide 'x-symbol-mytex) -(require 'x-symbol-tex) -(defvar x-symbol-mytex-required-fonts '(x-symbol-myfont)) -(put 'mytex 'x-symbol-font-lock-keywords 'x-symbol-tex-font-lock-keywords) -@end lisp - -@lisp -(defvar x-symbol-mytex-user-table nil) -@group -(defvar x-symbol-mytex-myfont-table - '((longarrownortheast (math arrow user) "\\longnortheastarrow") - (koerper (math letter user) "\\setK") - (circleS (math ordinary amssymb) "\\circledS"))) -@end group -@group -(defvar x-symbol-mytex-table - (append x-symbol-mytex-user-table - '(nil) - x-symbol-mytex-myfont-table - x-symbol-tex-table)) -@end group -@end lisp - -It is important that you do not define a variable for the language -access @code{x-symbol-font-lock-keywords}, but rather use the variable -of the parent language directly, see @ref{Language Internals}. - -During the testing phase, you should probably leave out the -@samp{'(nil)} which prevents warnings about redefinitions for the -following elements. - - -@node Language Definition File, , Language Extension File, Extending X-Symbol -@comment node-name, next, previous, up -@subsection Elisp File Defining a New Token Language -@cindex Language Definition File - -You might also want to define a new token language not based on another -language. - -As an example, consider a token language ``My Unicode'' (@code{myuc}) -for buffers with major mode @code{myuc-mode}. Thus, we register the -language by: - -@lisp -(defvar x-symbol-myuc-name "My Unicode") -(defvar x-symbol-myuc-modes '(myuc-mode)) -(x-symbol-register-language 'myuc 'x-symbol-myuc x-symbol-myuc-modes) -@end lisp - -Each token if language @code{myuc} consists of @samp{#} plus the -hexadecimal representation of the Unicode with hexadecimal values where -the case of digits is not important and the preferred case is upcase. A -single @samp{#} is represented by the token @code{##}. In order to be -more flexible, we want to define the tokens by their decimal value in -the table. There are no subscript and no images. The code below -(@file{x-symbol-myuc.el}) is included in the source distribution of -package X-Symbol. - -@lisp -(provide 'x-symbol-myuc) -(defvar x-symbol-myuc-required-fonts nil) -(defvar x-symbol-myuc-modeline-name "myuc") -@group -(defvar x-symbol-myuc-class-alist - '((VALID "My Unicode" (x-symbol-info-face)) - (INVALID "no My Unicode" (red x-symbol-info-face)))) -@end group -(defvar x-symbol-myuc-font-lock-keywords nil) -(defvar x-symbol-myuc-image-keywords nil) -@dots{} -@end lisp - -@lisp -(defvar x-symbol-myuc-case-insensitive 'upcase) -(defvar x-symbol-myuc-token-shape '(?# "#[0-9A-Fa-f]+\\'" . "[0-9A-Fa-f]")) -(defvar x-symbol-myuc-exec-specs '(nil (nil . "#[0-9A-Fa-f]+"))) -(defvar x-symbol-myuc-input-token-ignore nil) -@end lisp - -@lisp -@group -(defun x-symbol-myuc-default-token-list (tokens) - (list (format "#%X" (car tokens)))) -@end group -(defvar x-symbol-myuc-token-list 'x-symbol-myuc-default-token-list) -(defvar x-symbol-myuc-user-table nil) -@group -(defvar x-symbol-myuc-xsymb0-table - '((alpha () 945) (beta () 946))) -@end group -@group -(defvar x-symbol-myuc-table - (append x-symbol-myuc-user-table x-symbol-myuc-xsymb0-table)) -@end group -@dots{} -@end lisp - -@c ==================================================================== - -@node Various Internals, Design Alternatives, Extending X-Symbol, X-Symbol Internals -@comment node-name, next, previous, up -@section Various Internals - -@menu -* Tagging Insert Commands:: Don't break input methods Token and Electric. -* Avoiding Flickering:: Moving cursor in invisible commands. -@end menu - - -@node Tagging Insert Commands, Avoiding Flickering, Various Internals, Various Internals -@comment node-name, next, previous, up -@subsection Tagging Insert Commands for Token and Electric -@cindex Insert Commands, Tagging -@cindex Tagging Insert Commands -@cindex Recognizing Insert Commands - -Input methods Token (@pxref{Input Method Token}) and Electric -(@pxref{Input Method Electric}) stop their auto replacement if you use a -command which is not an insert command. - -@ftable @code -@item self-insert-command -@itemx newline -@itemx newline-and-indent -@itemx reindent-then-newline-and-indent -@itemx tex-insert-quote -@itemx TeX-insert-quote -@itemx TeX-insert-punctuation -@itemx TeX-insert-dollar -@itemx sgml-close-angle -@itemx sgml-slash -These commands and commands aliased to these are recognized as input -commands by having a non-@code{nil} value of its symbol property -@code{x-symbol-input}. -@end ftable - - -@node Avoiding Flickering, , Tagging Insert Commands, Various Internals -@comment node-name, next, previous, up -@subsection Avoiding Hide/Show-Invisible Flickering -@cindex Avoiding Flickering -@cindex Flickering, Invisible -@cindex Invisible Flickering - -Starting a command makes a previously revealed super- or subscript -command (@pxref{Super and Subscripts}) invisible again. Repeatedly -invoking commands which moves the point just by a small amount can lead -to some flickering. - -@ftable @code -@item forward-char -@itemx forward-char-command -@itemx backward-char -@itemx backward-char-command -If the point position after the execution of these commands is still -``at'' the super- or subscript command, the command won't be made -invisible at the first place. Each of these four commands have a -function (@code{1+} and @code{1-}) as the value of its symbol property -@code{x-symbol-point-function} which returns the position ``after'' when -called with the position ``before''. -@end ftable - -@c ==================================================================== - -@node Design Alternatives, Language Internals, Various Internals, X-Symbol Internals -@comment node-name, next, previous, up -@section Design Alternatives - -This section describes potential design alternatives and why they were -not used. - -@menu -* Alt Token Representations:: Why we need the conversion. -* Alt Global Mode:: How to turn on X-Symbol globally. -* Alt Auto Conversion:: When do we convert automatically. -@end menu - - -@node Alt Token Representations, Alt Global Mode, Design Alternatives, Design Alternatives -@comment node-name, next, previous, up -@subsection Alternative Token Representations -@cindex Alternative Token Representations -@cindex Token Representation, Alternatives - -Package X-Symbol represents tokens in the file by characters in the -buffer. This requires an automatic conversion when visiting a file or -saving a buffer, see @ref{Conversion}. - -Another possibility would be to use the tokens directly in the buffer -and just display them differently. You would need no conversion and you -could copy the text easily to a message buffer. This could be done by a -special face and an additional font-lock keyword for every token. The -disadvantages make this approach unfeasible: - -@itemize @bullet -@item -The editing commands would work on the tokens which are invisible for -the user. - -@item -Extremely resource and startup-time consuming. If as many characters -should be supported as done by package X-Symbol, including superscripts -and subscripts, more than 2000 faces with display tables would have to -be defined even without considering char aliases! - -@item -Time consuming. More than 2000 entries in you font-lock keywords would -slow down the fontification considerably, which would be too much even -when using @code{lazy-shot}! -@end itemize - -Another possibility would be to adapt @TeX{} to the representations of -the corresponding characters in Emacs' buffer. Again, you would need no -conversion. The disadvantages make this approach too restrictive: - -@itemize @bullet -@item -You cannot adopt @sc{sgml} to this approach. - -@item -You cannot read normal La@TeX{} files directly, you do not write normal -La@TeX{} files. - -@item -You would have different @TeX{} versions: one for X-Symbol with Emacs -and XEmacs/Mule, one with XEmacs/no-Mule. - -@item -If you are not an extremely good @TeX{} hacker, it would be impossible -to adopt this approach to support more than 256 characters. -@end itemize - -A third alternative would be very similar to the method used in this -package. There would be just a slight difference when running under -XEmacs/no-Mule: the internal representation of a character is always -just one character, but we would also provide font properties for -characters not of your default font. The disadvantages make this -approach too unsafe: - -@itemize @bullet -@item -Problems with current search/replace commands. - -@item -Problems with the current version of @code{font-lock} (it should @emph{never} -overwrite the font property for this character, even if the character -matches some @var{match} in @code{font-lock-keywords} and -@var{overwrite} is non-@code{nil}). This gets even more difficult with -superscripts/subscripts. - -@item -Unless you can provide a syntax table for faces (you cannot), characters -in different faces with the same encoding are in the same syntax class, -which is irritating: e.g., @code{\leftrightarrow} and @code{\approx} -would be delimiters. - -@item -Needs pre/post-conversion in lisp when using executables for the conversion. -@end itemize - - -@node Alt Global Mode, Alt Auto Conversion, Alt Token Representations, Design Alternatives -@comment node-name, next, previous, up -@subsection Alternative Ways to Turn on X-Symbol Globally -@cindex Alternative Global Mode -@cindex Global Mode, Alternatives -@cindex Turn on Globally, Alternatives - -This package hooks itself into @code{hack-local-variables-hook} which -makes the installation very simple. - -Another possibility would be to use the major-mode hooks which is the -normal way how to turn on a minor mode. The disadvantages are: - -@itemize @bullet -@item -The installation is more complicated. - -@item -Local variables in files are not yet processed (this was the main reason -not to do it this way). -@end itemize - -Another possibility would be to hook X-Symbol into -@code{find-file-hooks}, as it is done in old versions of package -X-Symbol. It would be as easy as the current approach but we would have -to be careful with sequence of functions in @code{find-file-hooks}, -especially with the function hooked in by @code{font-lock}. - - -@node Alt Auto Conversion, , Alt Global Mode, Design Alternatives -@comment node-name, next, previous, up -@subsection Alternative Auto Conversion Methods -@cindex Alternative Auto Conversion -@cindex Auto Conversion, Alternatives - -@vindex hack-local-variables-hook -@vindex after-insert-file-functions -@vindex write-region-annotate-functions -Without package @code{crypt}, this package automatically decodes tokens -when turning on the minor mode (in @code{hack-local-variables-hook}, -@pxref{Alt Global Mode}) or in @code{after-insert-file-functions}. This -package automatically encodes characters in -@code{write-region-annotate-functions}. The disadvantage is that the -possibility to change buffers in @code{write-region-annotate-functions} -is not official (@pxref{Wishlist Emacs}), i.e., not mentioned in the -docstring (only mentioned for corresponding encode-functions of package -@code{format} which use a similar loop in the C code). - -@vindex write-file-hooks -With package @code{crypt}, this package automatically decodes tokens -when turning on the minor mode. This package automatically encodes -characters in @code{write-file-hooks}. The disadvantage is that the -encoding is slower (use @code{jka-compr} instead @code{crypt}) and the -problem with @code{vc-next-action} (@pxref{Spurious Encodings}). - -@vindex write-file-data-hooks -Without package @code{crypt}, Version 2.6 of this package automatically -encoded characters in @code{write-file-data-hooks}. The advantage was -that changing buffers there is official, the disadvantage is that it is -also more complicated. - -@pindex format -A totally different method would be to use package @code{format}. -Unfortunately, this is not really possible, since a @var{regexp} in -@code{format-alist} is much too weak, i.e., X-Symbol's decoding does not -change any file headers which would represent the file format. In -XEmacs, this package also fails to work properly with @code{jka-compr} -and @code{crypt}. - -@c ==================================================================== - -@node Language Internals, Misc Internals, Design Alternatives, X-Symbol Internals -@comment node-name, next, previous, up -@section Language Internals -@cindex Language Internals -@cindex Token Language Internals -@cindex Internals, Languages -@cindex Registered Languages -@cindex Loaded Language -@cindex Initialized Language -@cindex Language Access -@cindex Accessing Language Depending Variables - -In order to use a token language or accessing one of the language -dependent values, the following conditions must be met: - -@itemize @bullet -@item -The language must be @dfn{registered}. This makes it possible to select -the language in the menus. It also prevents to load a potentially -dangerous file when a file specifies a buffer-local value of -@code{x-symbol-language}. - -@ftable @code -@item x-symbol-register-language -Registering a language includes stating the name of the feature (i.e., a -file) which provides the language. The name of the language must have -been already defined. -@end ftable - -@item -The file providing the language must have been @dfn{loaded}. This will -be done automatically when the language is initialized. Customizing -X-Symbol will also load the language files. - -@item -The language must be @dfn{initialized}. This will be done automatically -if the language is used. This loads the language file and fails if the -language has not been registered. If some minor language information is -needed, e.g., in the highlight menu of the Grid (@pxref{Input Method -Grid}), you should initialize the language explicitly, e.g., by the -following command: - -@table @kbd -@item M-x x-symbol-init-language-interactive -@findex x-symbol-init-language-interactive -Initialized a token language if it is not already initialized. -@end table -@end itemize - -Language dependent values are accessed by language accesses: - -@table @code -@item x-symbol-language-value -@findex x-symbol-language-value -Returns the language depending value. Also initializes language if -necessary. E.g., we get the name of a language by the language access -@code{x-symbol-name}. With a simplified expansion, we get - -@lisp -(x-symbol-language-value 'x-symbol-name 'tex) - @expansion{} (symbol-value (get 'tex 'x-symbol-name)) - @result{} (symbol-value 'x-symbol-tex-name) - @result{} "TeX macro" -@end lisp - -@item x-symbol-language-access-alist -@vindex x-symbol-language-access-alist -List of all language accesses. A token language @emph{must} define all -variables accessed by language accesses. A @dfn{language access} is a -property of the language symbol, its value is the symbol naming a -variable whose value is used. - -If the language is a derived language, e.g., like language @code{utex}, -the language access @code{x-symbol-font-lock-keywords}, should point -directly to the variable of the parent language (here @code{tex}), see -file @file{x-symbol-utex.el}. -@end table - - -@c Hi, X-Symbol's interna have changed considerably with v4.3.1-alpha. For -@c token languages to work with new versions of X-Symbol, it is important -@c to define some new language accesses (you -@c can also delete some if you do not want X-Symbol backward compatiblity) - -@c The reason for the change is: - -@c * more general ways to define the "grammar" of tokens, also useful for -@c ProofGeneral's languages, see below. -@c * faster conversion (I also dropped the support of executables) - - -@c As an example, let's look at x-symbol-texi.el): - -@c The following vars must now be defined (value nil...) - -@c (defvar x-symbol-texi-generated-data nil) - -@c Now the interesting part: - -@c (defvar x-symbol-texi-token-grammar -@c '(x-symbol-make-grammar -@c :encode-spec '(?@) -@c :decode-regexp -@c "@\\(?:[A-Za-z]+{[A-Za-z]?}\\|[{}]\\|[~^\"'`][A-Za-z]\\|,{[A-Za-z]}\\)" -@c :decode-spec '(?@)) -@c "Token grammar for language `texi'.") - -@c (defvar x-symbol-texi-input-token-grammar -@c '("@\\(?:[A-Za-z]+{[A-Za-z]?}\\|[{}]\\|[~^\"'`][A-Za-z]\\|,{[A-Za-z]}\\)\\'" -@c ?@) -@c "Grammar of input method Token for language `texi'.") - -@c In short, not too difficult if the token grammar is regular (even -@c simpler for SGML entities). The good news: powerful enough for -@c irregular token grammar which couldn't be defined with previous versions -@c of X-Symbol. - -@c The conversion now works as follows: - -@c 1. decode (token->char): search for regexp, then decode match except if -@c context is "bad". -@c 2. encode (char->token): search for non-ascii/8bit, then encode match. -@c Surround by spaces if context is "bad". - -@c The "token grammar" is simply a definition of the regexp and the bad -@c contexts, which can be different for different "shapes" of the token. -@c A special BEFORE context is the escape character: this character may -@c appear exactly even times before the token; it will be used for -@c all shapes. - -@c Lets assume a language "Isabelle Symbol" plus symbols for identifiers -@c and operators (see below for lisp coding): - -@c shape nil: \<NAME> -@c shape id: [A-Za-z_][A-Za-z_0-9]+ -@c shape op: [<>!+-*/|&]+ - -@c To make the conversion fast, the shape must be given at definition time, -@c i.e., the init must get tokens in the form (TOKEN . SHAPE). -@c Either per hand or computed via function in language access -@c x-symbol-token-list... - -@c The decode-regexp must match all tokens and: - -@c a. should be specific enough to make the conversion fast -@c b. must be general enough to match strings which should not be -@c considered to contain a token even if a substring is a token (to -@c avoid excessive context checking) - -@c In our example, the regexp would be something like - -@c "\\\\<[A-Za-z]+>\\|[A-Za-z_][A-Za-z_0-9]+\\|[<>!+-*/|&]+" - -@c No bad context has to be defined for decoding since the regexp is -@c general enough. - -@c For encoding, we have to define the following bad contexts (no context -@c can be defined for shape nil): - -@c shape id: BEFORE: [A-Za-z_0-9], AFTER: [A-Za-z_0-9] -@c shape op: BEFORE: [<>!+-*/|&], AFTER: [<>!+-*/|&] - -@c BEFORE is a regexp used via `string-match' with the character before the -@c character to encode; if it matches, we put a space before the token for -@c the character. AFTER is a regexp used with `looking-at' with point -@c after the character. We would put a space after the token. - -@c There is probably no escape char defined for Isabelle Symbols (i.e., -@c "\\" is no token). - -@c The input-token-grammar is very similar to the decode-grammar: the -@c regexp should end with \\' such that only matches ending at point will -@c get replaced, and we should define a bad context (which will be -@c tried to match against `last-command-char'). - -@c This makes the grammar below. - -@c Hope this helps, -@c - Christoph - - -@c (defvar x-symbol-xisa-token-grammar -@c '(x-symbol-make-grammar -@c :encode-spec '(((id . "[A-Za-z_0-9]") (op . "[<>!+-*/|&]")) . -@c ((id . "[A-Za-z_0-9]") (op . "[<>!+-*/|&]"))) -@c :decode-spec nil -@c :decode-regexp "\\\\<[A-Za-z]+>\\|[A-Za-z_][A-Za-z_0-9]+\\|[<>!+-*/|&]+" -@c :token-list #'x-symbol-xisa-default-token-list)) - -@c (defvar x-symbol-xisa-input-token-grammar -@c '(("\\(?:\\\\<[A-Za-z]+>\\|[A-Za-z_][A-Za-z_0-9]+\\|[<>!+-*/|&]+\\)\\'") -@c ((id . "[A-Za-z_0-9]") (op . "[<>!+-*/|&]")) -@c (id . "[A-Za-z_0-9]") (op . "[<>!+-*/|&]"))) - -@c (defun x-symbol-xisa-default-token-list (tokens) -@c (mapcar (lambda (x) -@c (cons x (cond ((string-match "\\`[A-Za-z_][A-Za-z_0-9]+\\'" x) 'id) -@c ((string-match "\\`[<>!+-*/|&]+\\'" x) 'op)))) -@c tokens)) - -@c (defun x-symbol-xisa-table -@c '((product () "\\<Prod>") -@c (longarrowright () "-->") -@c (alpha () "alpha"))) - - -@c ==================================================================== - -@node Misc Internals, , Language Internals, X-Symbol Internals -@comment node-name, next, previous, up -@section Miscellaneous Internals - -TODO. This is currently just a collection of unrelated stuff. - -@c was in "Char Group -Characters might also define a @dfn{subgroup} which is a string defining -some order on characters in the same group (@pxref{Char Group}) and is -also used for default contexts/bindings (@pxref{Customizing Input -Methods}). - -@vtable @code -@item x-symbol-group-syntax-alist -Lists all valid character groups. Under Emacs and XEmacs/Mule, this -list also determines the syntax of characters. -@end vtable - -The character group could probably also be used to define character -categories if they are implemented in XEmacs. - -@c =========================================================================== - -@node Problems, History, X-Symbol Internals, Top -@comment node-name, next, previous, up -@chapter Problems, Troubleshooting -@cindex Problems -@cindex Troubleshooting -@cindex Annoyances -@cindex Bugs - -This section is based on a successful installation of package X-Symbol. -@xref{Checking Installation}. - -@menu -* Nomule Problems:: X-Symbol provides a @emph{poor} man's Mule. -* Spurious Encodings:: Some commands turn off X-Symbol mode. -* No Encoding:: The encoding does not work in a rare case. -* FAQ:: Frequently asked questions. -* Bug Reports:: How to contact the maintainer of X-Symbol. -@end menu - -@c =========================================================================== - -@node Nomule Problems, Spurious Encodings, Problems, Problems -@comment node-name, next, previous, up -@section Problems under XEmacs/no-Mule -@cindex Nomule Problems -@cindex @code{transpose-chars} Problems -@cindex Replace Problems -@cindex Rectangle Problems -@cindex Abbrev Problems -@cindex Invisible Point -@cindex Parenthesis Problems -@cindex Fill Problems - -If you use package X-Symbol under XEmacs/no-Mule, there are some -annoyances which result from the fact that additional ``X-Symbol -characters'' are represented by two characters internally. Package -X-Symbol just provides a kind of ``@emph{poor} man's Mule'', see -@ref{Poor Mans Mule}. This means: I have provided workarounds for the -most annoying ones, but some remain (and will remain: I am not going to -provide workarounds for these): - -@itemize @bullet -@item -If @code{font-lock} is not prepared to display these two-character -sequences, i.e., if you installation is incomplete (@pxref{Role of -font-lock}), they look like @samp{\233a} instead @code{alpha}. - -@item -Commands which add more than one entry to the @code{buffer-undo-list} -and involve X-Symbol characters might lead to strange results, -e.g. @kbd{C-t} (@code{transpose-chars}) with point between character -@code{alpha} and @samp{b}, leads to @code{beta}@samp{a}. Simple -deletion and insertion works OK, though. - -@item -Selecting or inserting a rectangle with X-Symbol characters on the left -or right margin might not work properly. - -@item -Be careful with @kbd{M-%} (@code{query-replace}): the first character of -@var{from-string} can probably match the second of the two ``internal'' -characters of an X-Symbol character. - -@item -If you use @kbd{C-x '} (@code{expand-abbrev}) without @kbd{M-'} -(@code{abbrev-prefix-mark}) and the last word before point starts -directly after a X-Symbol character, @kbd{C-x '} could behave strange: - -@itemize @minus -@item -If @code{words-include-escapes} is @code{t}, there will be no expansion. - -@item -If @code{words-include-escapes} is @code{nil}, the second ``internal'' -character could be the first character of the last word before point -which is going to be replaced by the abbrev mechanism. -@end itemize - -@item -If the character under point is a X-Symbol character, you will not see -the cursor if you exit a command with an error or with quit (@kbd{C-g}). -Unfortunately, XEmacs (as opposed to Emacs) does not run the hooks in -@code{post-command-hook} in these cases. Solution: move point right -(@kbd{C-f}). - -@item -If you provide prefix arguments to commands, they are likely to consider -just ``internal'' characters. E.g., @kbd{C-u 2 C-f} before @code{alpha} -behaves like @kbd{C-f}. - -@item -Column position considers ``internal'' characters, e.g., @kbd{C-n} might -jump to an unexpected position (well, typically just one character -left/right from the expected position, if at all). - -@item -Auto-filling also considers ``internal'' characters, i.e., might break -the line too early. - -@item -There are no syntax definitions for the new characters, e.g., -@kbd{M-C-f} before @code{floorleft} does not move to the closing -@code{floorright}. - -@item -In some cases, e.g., when using the minibuffer for input via @kbd{M-%} -or @kbd{C-s}, the internal representation of X-Symbol characters -(@pxref{Char Representation}) are displayed directly (@pxref{FAQ Strange -Chars}) -@end itemize - -@c ==================================================================== - -@node Spurious Encodings, No Encoding, Nomule Problems, Problems -@comment node-name, next, previous, up -@section Spurious Encodings -@cindex Spurious Encodings -@cindex Version Control Problems -@cindex @code{write-file} Problems -@cindex @code{vc} Problems -@cindex Revert Buffer Problems - -@pindex vc -In rare cases, some commands (mostly from package @code{vc}) encode -characters to tokens or even turn off X-Symbol mode. Package X-Symbol -will not provide a workaround for these problems, because the situations -in which they appear are too rare, the workarounds are easy, and the -problems are not really caused by package X-Symbol. - -@itemize @bullet -@item -@pindex crypt -Doing the next logical version control operation (@kbd{C-x v v} and -friends) encode characters to tokens when using package @code{crypt}. - -Solution: use package @code{jka-compr} instead @code{crypt} (this is -recommended anyway, @pxref{File IO Packages}). Or kill the buffer and -revisit the file. - -@item -@pindex auctex -When using Auc@TeX{} with its default-mode algorithm, getting rid of the -recently checked-in version of a file without reverting the buffer -afterwards (@kbd{C-u C-x v c}) turns off X-Symbol mode without encoding -the characters, e.g. under XEmacs/no-Mule, you see some strange -characters like @samp{\233a}. - -Explanation: when using Auc@TeX{}'s @code{TeX-default-mode}, the final -@code{major-mode} is different from the initial @code{major-mode} -deduced using @code{auto-mode-alist}. If this is the case, the VC -command executes @code{normal-mode} which kills all local-variables -including turning-off @code{x-symbol-mode}. - -Solution: Turn on X-Symbol mode or change @code{auto-mode-alist} to -directly choose @code{latex-mode}: - -@lisp -(push '("\\[tT]e[xX]\\'" . latex-mode) auto-mode-alist) -@end lisp - -@item -@findex write-file -@vindex change-major-mode-with-file-name -When using Auc@TeX{} with its default-mode algorithm, writing a La@TeX{} -buffer into a file with another file name turns off X-Symbol mode. - -Explanation: Emacs sets the major mode with the file name. When using -Auc@TeX{}'s @code{TeX-default-mode}, we get the problems as described in -the previous item. - -Solution: Set @code{change-major-mode-with-file-name} to @code{nil} or -use the solution from the previous item. -@end itemize - -@c ==================================================================== - -@node No Encoding, FAQ, Spurious Encodings, Problems -@comment node-name, next, previous, up -@section The Encoding Does Not Work -@cindex No Encoding -@cindex @code{write-region} Problems - -In a rare case, X-Symbol cannot do its encoding, i.e., convert the -characters to tokens. - -@itemize @bullet -@item -@findex write-region -@pindex crypt -@vindex write-file-hooks -@kbd{M-x write-region} fails to do the encoding if you use package -@code{crypt}. - -Explanation: with package @code{crypt}, the encoding has to be done by a -function in @code{write-file-hooks} which is not used by -@code{write-region}. - -Solution: use package @code{jka-compr} instead @code{crypt} (this is -recommended anyway, @pxref{File IO Packages}). Or visit the region file -and save it again via @kbd{C-x C-s}. -@end itemize - - -@c =========================================================================== - -@node FAQ, Bug Reports, No Encoding, Problems -@comment node-name, next, previous, up -@section Frequently Asked Questions -@cindex Frequently Asked Questions -@cindex FAQ X-Symbol - -It is assumed that you had successfully installed package X-Symbol, see -@ref{Checking Installation}. - -@menu -* FAQ XEmacs Core:: XEmacs crashes when using input method Token -* FAQ font-lock:: X-Symbol's fontification does not work. -* FAQ Strange Chars:: The buffer contains strange characters -* FAQ No Subscripts:: I cannot see any/some super-/subscripts. -* FAQ Stupid Subscripts:: I see subscripts where I don't want them. -* FAQ Font Size:: The characters are too small or too big. -* FAQ Conversion:: The conversion changes some tokens. -* FAQ Additional Spaces:: A space is added during the encoding. -* FAQ 8bit Chars:: I do not want 8bit characters in the file. -* FAQ Hyphen:: I cannot distinguish @code{hyphen} from @samp{-}. -* FAQ Spell Check:: I have problems with spell-checking. -@end menu - - -@node FAQ XEmacs Core, FAQ font-lock, FAQ, FAQ -@comment node-name, next, previous, up -@subsection XEmacs Crashes when using Input Method Token -@cindex XEmacs Core -@cindex Core XEmacs -@cindex Crash XEmacs -@cindex Input Method Token - -It has been reported that XEmacs-21.0 to XEmacs-21.1.8 might produce -cores when you use input method Token. That's why I strongly recommend -to use XEmacs-21.1.9 or higher with package X-Symbol, see -@ref{Requirements}. - -You get a warning during X-Symbol's initialization when using these -XEmacs versions. If you don't want to upgrade, but also don't want to -see the warning, you might want to set variable -@code{x-symbol-xmas-warn-about-core} to @code{nil}. - -A core in XEmacs always indicates a bug in XEmacs itself, not in a lisp -package like X-Symbol. Thus, send a bug report to the XEmacs team if -you get cores with the @emph{newest} version of XEmacs (please put me in -the CC). - - -@node FAQ font-lock, FAQ Strange Chars, FAQ XEmacs Core, FAQ -@comment node-name, next, previous, up -@subsection X-Symbol's Fontification does Not Work -@pindex font-lock -@cindex No fontification -@cindex @code{font-lock} Problems - -In this case, super- and subscripts are not properly displayed -(@pxref{FAQ No Subscripts}) and under XEmacs/no-Mule, the buffer -contains s.th. like @samp{\233a} (@pxref{FAQ Strange Chars}). -Possible causes: - -@itemize @bullet -@findex x-symbol-fontify -@item -You have turned off @code{font-lock} or @code{font-lock} is out of sync. -Use @kbd{M-x x-symbol-fontify}. @xref{Role of font-lock}. - -@item -The font-lock keywords of the current buffer are not prepared to display -X-Symbol characters. @xref{Role of font-lock}. - -@item -@vindex fast-lock-save-faces -You use package @code{fast-lock}. Solution: set -@code{fast-lock-save-faces} to @code{nil} (done by default -installation). - -@item -You use some version control commands. You have probably noticed that -these versions control commands also turn off @code{font-lock} in modes -where you don't use X-Symbol, i.e., this is not a problem of package -X-Symbol. @pxref{Wishlist Emacs} and @ref{Spurious Encodings}. -@end itemize - - -@node FAQ Strange Chars, FAQ No Subscripts, FAQ font-lock, FAQ -@comment node-name, next, previous, up -@subsection The Buffer Contains Strange Characters -@cindex Strange Characters -@cindex Funny Characters -@cindex Character Problems -@cindex Escape Character Problems -@pindex Mathematica - -If you see s.th. like @samp{\233a}, you see the internal representation -of X-Symbol characters under XEmacs/no-Mule (@pxref{Char -Representation}) directly. Possible causes: - -@itemize @bullet -@item -You have @code{font-lock} problems, see @ref{FAQ font-lock}. - -@item -More complicated editing commands like @kbd{C-t} may produce strange -character sequences which do not represent X-Symbol characters, see -@ref{Nomule Problems}. - -@item -In some cases, e.g., when using the minibuffer for input via @kbd{M-%} -or @kbd{C-s}, it would be too much work to fontify these character -sequences in order to display proper X-Symbol characters. @xref{Nomule -Problems}. -@end itemize - -If Emacs shows some strange glyphs for some characters in your buffers -but not the Grid, there is a font in you font path which pretends to -have charset registry-encoding @code{adobe-fontspecific}, but in fact -uses another encoding. E.g., Mathematica's fonts cause the characters -intersection and union to mix up. Possible solutions: - -@itemize @bullet -@item -Delete that font from the font path. Maybe moving it at the end also -works. - -@item -In Emacs-21, you have the chance to disable the use of some fonts (if -you know something similar for XEmacs, please let me know). For -example, to disable the fonts from Mathematica, use - -@lisp -(setq face-ignored-fonts '("\\`-wri-math1")) -@end lisp - -@item -If the characters show up correctly initially, but mix up after some -font changing command, don't use that command. E.g., the font selection -in XEmacs via the Options menu seems to loose some information about the -original font. OK, this is not really a satisfying solution, but the -whole issue isn't my fault, either. -@end itemize - - -@node FAQ No Subscripts, FAQ Stupid Subscripts, FAQ Strange Chars, FAQ -@comment node-name, next, previous, up -@subsection I Cannot See any/some Super- or Subscripts -@cindex No Subscripts -@cindex Subscript Problems -@cindex Superscript Problems - -If you cannot select @samp{Super-/Subscripts} in the menu, the first of -the following points is more likely the cause, the others otherwise. - -@itemize @bullet -@item -You have @code{font-lock} problems, see @ref{FAQ font-lock}. - -@item -There are cases where super- and subscripts are not displayed, see -@ref{Super and Subscripts}. - -@item -The argument in braces are not correctly recognized, since the -@code{font-lock} syntax-table is not correct. It should include -@samp{@{} as the only open parenthesis and @samp{@}} as the only close -parenthesis character. Note that this is quite difficult to archive -under Emacs and XEmacs/Mule. This is a minor bug in the corresponding -@code{font-lock} package, but would require other changes there, -therefore not likely to be fixed. Fortunately, this does not happen -often. -@end itemize - - -@node FAQ Stupid Subscripts, FAQ Font Size, FAQ No Subscripts, FAQ -@comment node-name, next, previous, up -@subsection I See Super- and Subscripts where I Don't Want Them. -@pindex font-lock -@pindex font-latex -@cindex Stupid Subscripts -@cindex Annoying Subscripts -@cindex Label Subscripts -@cindex Subscript Problems -@cindex Superscript Problems - -E.g., I see a subscript in arguments of @code{\label}. Package X-Symbol -only uses super- and subscripts if they are in braces, if the -@code{asciicircum}/@code{underscore} has not been fontified yet or is -only fontified with faces which are allowed by -@code{x-symbol-tex-font-lock-allowed-faces}, see @ref{Super and -Subscripts}. - -@itemize @bullet -@item -You use the default @code{tex-font-lock-keywords}: The argument of -@code{\include} and friends are not fontified by these, i.e., the use of super- -and subscripts are not prohibited. Solution: add your own keyword for -these commands or use package @code{font-latex}, see below. - -@item -You use package @code{font-latex}. Solution: set -@code{font-lock-maximum-decoration} to value @code{t}, 2 or higher. -Package X-Symbol will still use subscripts in @code{\verb}, in the -@code{verbatim} environment, in the argument of @code{\includegraphics} -and probably other commands. Some of these problems will probably be -solved by future versions of @code{font-latex}. - -@item -You use my font-lock keywords (file @file{x-font-lock.el}): everything -should work fine. Please note that this file is not meant to be a -replacement of @file{font-latex.el} useful to all users. Also, -highlighting is a matter of taste, i.e., I am not going to change the -@file{x-font-lock.el} to support La@TeX{}-2.09, @TeX{}'s math regions, -other likings, etc. - -@item -You use your own font-lock keywords for @TeX{}. In this case, you be able -to adapt the solutions from the previous points to your situation. -@end itemize - - -@node FAQ Font Size, FAQ Conversion, FAQ Stupid Subscripts, FAQ -@comment node-name, next, previous, up -@subsection The Characters are Too Small or Too Big -@cindex Font Size -@cindex Big Characters -@cindex Small Characters - -Why aren't there more different font sizes? Because nobody (including -the author) was in the mood to design them (actually only the xsymb1 -font needs to be designed). @emph{Please do only ask the author whether they -are in work if you are serious to do it yourself otherwise!} - -Why do I get a lower-case letter when I should get a capital letter (or -vice versa)? Please convince yourself (@pxref{Info}) that you actually -get the correct letter---they are just of different sizes. -@xref{Installing Fonts Lisp}. - -I was told that the xsymb1 font scales reasonably well to a larger font -size---if you don't think so, design a new font and send me the result. - - -@node FAQ Conversion, FAQ Additional Spaces, FAQ Font Size, FAQ -@comment node-name, next, previous, up -@subsection The Conversion Changes Some Tokens -@cindex Token Changes -@cindex Conversion Problems -@cindex Encoding Problems - -In most token languages, a character might be represented by different -tokens. If this character is encoded (when saving the buffer), the -canonical representation is saved. @xref{Unique Decoding}. - -@itemize @bullet -@item -Solution: Do not redefine standard @TeX{} macros or use unique decoding. -@end itemize - - -@node FAQ Additional Spaces, FAQ 8bit Chars, FAQ Conversion, FAQ -@comment node-name, next, previous, up -@subsection A Space is Added During the Encoding -@cindex Additional Spaces -@cindex Token Problems -@cindex Encoding Problems -@cindex Space Problems - -A space is added after some characters during the encoding to tokens. -With token languages @code{tex} and @code{utex} (not with language -@code{sgml}), there must be a space after the token to recognize its end -in some cases. - -E.g., if your buffer contains @samp{a+b} (where + stands for the -character @code{circleplus}), this is encoded to @samp{a\oplus b} (note -the space after @code{\oplus}). Decoding it yields @samp{a+ b}. - -I admit, this looks ugly. The space is only added if the symbol -character is followed by a letter or by @samp{@@}. Thus, decoding -@samp{a\oplus\beta} yields @samp{a+b} (without space!). - -@itemize @bullet -@item -Suggestion: Also use a space before @code{\oplus}. The alternative -would be to delete the space which other people won't like. -@end itemize - -@xref{TeX Macro Conversion} for an exact description. - - -@node FAQ 8bit Chars, FAQ Hyphen, FAQ Additional Spaces, FAQ -@comment node-name, next, previous, up -@subsection I Don't Want 8bit Characters in the File -@cindex 8bit Character Problems -@cindex No 8bit Characters - -By default, these are not encoded if the buffer-local variable -@code{x-symbol-8bits} is non-@code{nil}. - -By default, this variable is only set to non-@code{nil}, if something like - -@example -\usepackage[latin1]@{inputenc@} -@end example - -is found at the beginning of the file. That line does not make sense if -you do not have 8bit characters in the file, i.e., delete it. -@xref{File Coding}. Note: commenting the line is not enough! (I do not -run La@TeX{} to check for the line, I just do plain text search.) - - -@node FAQ Hyphen, FAQ Spell Check, FAQ 8bit Chars, FAQ -@comment node-name, next, previous, up -@subsection I Cannot Distinguish Character @code{hyphen} from @samp{-} -@cindex Hyphen Versus Minus -@cindex Minus Versus Hyphen - -In most fonts, the Latin character @code{hyphen} cannot be distinguish -from the Ascii character @samp{-}. If you do not want to decode the -corresponding token @code{\-} or @code{­}, put the following into -your @file{~/.emacs}: - -@lisp -(setq x-symbol-tex-user-table '((hyphen))) -(setq x-symbol-sgml-user-table '((hyphen))) -@end lisp - -A better alternative would be to make @code{font-lock} display these -character in a different color. - - -@node FAQ Spell Check, , FAQ Hyphen, FAQ -@comment node-name, next, previous, up -@subsection Problems with Spell-checking -@cindex Spell Checking -@pindex ispell -@findex ispell-word -@findex ispell-region - -As explained in @ref{Miscellaneous Packages}, @code{ispell} assumes the -buffer contents to be the same as the file contents and does not provide -any hook to fix this. This might break @code{ispell-word} and -@code{ispell-region}. Possible symptoms: - -@itemize @bullet -@item -A word which contains letters which the program @code{ispell} does not -know about is either not spell-checked or parts of it are spell-checked -as independent words. - -Solution: Use the @code{ispell}s 8bit dictionaries even if you do not -store 8bit characters in the file. This should fix the problem for -almost every word, except, e.g., words containing the Latin-9 character -@code{oe} if you use a Latin-1 encoding. - -@item -Spell-checking might stop with the error message @samp{Ispell -misalignment}. I can reproduce this only with Emacs, not with XEmacs. - -Question: If you know some settings (like for -@code{process-coding-system-alist}) which solves this problem, please -let me know! - -Solution: turn X-Symbol off before spell-checking your buffer. This is -of course no option if you use @code{flyspell}. -@end itemize - -The real solution would be to fix @code{ispell}, at least by providing a -useful hook which allows X-Symbol to fix the problem. @xref{Wishlist -Emacs}. You are strongly encouraged to send a patch to the maintainer -of @code{ispell}, you even get a paragraph here in -@ref{Acknowledgments}! - -@c =========================================================================== - -@node Bug Reports, , FAQ, Problems -@comment node-name, next, previous, up -@section How to Send a Bug/Problem Report -@cindex Bug Reports -@cindex Problem Reports -@cindex Contacting the Maintainer -@cindex Maintainer Address -@cindex Email to the Maintainer -@cindex Reports of Bugs - -Bug fixes, bug/problem reports, improvements, and suggestions are -strongly appreciated. So are corrections to this manual (better -explanations, correcting my English, @dots{}). Especially useful would be -some feedback by people using default fonts with a charset -registry-encoding other than @code{iso8859-1} (Western encoding). - -Please read this section carefully, even if you generally know how to -send a bug report (@pxref{Bugs,,,@value{emacs},@value{emacsman}}). -This might look tedious to you, but it actually saves a lot of time -(your time, too). - -For each bug/problem report or question you want to send to the -maintainer, please use the following sequence: - -@enumerate -@item -Make sure that you use the @strong{newest version} of X-Symbol. You are -reading Edition @value{edition} of the manual for X-Symbol -@value{version}. - -@item -Read the manual, especially @ref{Checking Installation}, @ref{Problems} -and @ref{FAQ}. The four indexes (@pxref{Indexes}) might also lead you -to an answer to your question. - -@item -Use @kbd{M-x x-symbol-package-bug} (also to be found in X-Symbol's -Command submenu) to write your report describing @strong{one} bug or -problem, i.e., use @strong{different mails} for @strong{unrelated -problems}. Please do not ``reuse'' a mail thread with the maintainer, -i.e., if you start a section with ``Here is another problem'', you do -something wrong. - -If Emacs is not your mail tool, copy the Subject header line and the -message body from Emacs' @file{*mail*} buffer to your mail tool. - -If @kbd{M-x x-symbol-package-bug} fails to work, you have a problem with -your installation and your report should be about this problem. In this -case, use @samp{x-symbol @var{version}; @var{summary}} as Subject header -where @var{version} is the version of X-Symbol and @var{summary} is a -brief summary of your installation problem. - -(@emph{Rationale}: This command automatically extracts some essential -information without any work by you. Don't waste your time pondering whether -you should really use this command to write your report. The additional -advantage is that I can see who doesn't have any problems wasting my -time.) - -@item -Start your report with: - -@quotation -In the manual, I checked the sections @var{section1}, @var{section2}, -@dots{}, but didn't find anything which helped me with the following -problem: -@end quotation - -The sections @var{section1}, @var{section2}, etc are names (not -numbers!) of the sections (not whole chapters!) in the manual where you -would expect an answer to your question/problem/bug. - -If you didn't know which sections to inspect, please check the indexes. -If they are not helpful, send me words/terms which should be included in -the indexes. - -(@emph{Rationale}: This way, I get an idea where to improve the manual, -especially by adding cross references. It also ensures that you really -have tried to find the relevant information yourself.) - -@item -If buffer @file{*Warnings*} does not exist in the buffer menu, -everything is fine so far. So is (for me as the author of package -X-Symbol), if @samp{X-Symbol} is not mentioned there. Otherwise, -include the contents of buffer @file{*Warnings*} into your bug report. - -@c TODO: without warnings.el from Emacs-21.4 -Temporary Emacs (< v21.4) note: the warnings might be somewhere hidden -in buffer @file{*Messages*}. - -@item -Put the parts of the code from @file{~/.emacs} and the system-wide files -which causes the problem into a fresh file @file{@var{my-problem}.el}. -The problem/error should be visible when invoking - -@example -xemacs -no-site-file -q -l @var{my-problem}.el -@end example - -In the minimal case, @file{@var{my-problem.el}} just contains the -following line (@pxref{Installing Lisp}): - -@lisp -(x-symbol-initialize) -@end lisp - -If the error has disappeared after you have included your complete -@file{~/.xemacs/init.el} and @file{~/.emacs}, the problem is likely -caused by some code of your system-wide installation. Include the code, -which can be found using command @kbd{M-x find-library} with files -@file{site-start} and @file{default} (everything is fine if these files -do not exist). - -If you use @file{x-symbol-site.el} (its use is deprecated), copy its -contents into @file{@var{my-problem.el}} and delete the corresponding -@code{load} command. - -Attach the file @file{@var{my-problem}.el} to your report. -@strong{Please try to minimize the size of @file{@var{my-problem}.el}}! -A standard technique is recursive halving: Delete the second half of -@file{@var{my-problem.el}}. If the problem disappears, delete the first -half instead. Do the same with the smaller file again, @dots{}. - -(@emph{Rationale}: Most problems are a consequence of some specific -customizations, but I don't have time to debug each user's init file.) - -@item -If you have set variable @code{custom-file} in -@file{@var{my-problem}.el}, attach the corresponding file to your report. - -@item -If the error can only be reproduced in combination with another Emacs -package, please send me: - -@itemize @minus -@item -If it is included in the standard Emacs/XEmacs distribution / if is an -XEmacs package: the version you use if it is not that from the -Emacs/XEmacs distribution (use @kbd{M-x find-library} to check whether -you really use the version from the Emacs/XEmacs distribution). - -@item -If it is a non-standard (and non-obscure) package: the URL of the -distribution and/or the source. - -@item -Otherwise: include its code into @file{@var{my-problem}.el} and delete -the corresponding @code{load} or @code{require} command. Then, reduce -the size of @file{@var{my-problem}.el} as described above. -@end itemize - -@item -If the problem is not reproducible with an @emph{arbitrary} -(@file{.tex}, @file{.html}, @dots{}) file, try to minimize the file such that -the problem can be still reproducible, and include the file with its -full file name into your bug report. - -(@emph{Rationale}: Most problems are only reproducible with specific -files.) - -@ignore -@item -I would appreciate, if you would set variable @code{debug-on-error} to -@code{t} before you trigger the error and send me the contents of buffer -@file{*Backtrace*}. At best, using the uncompiled versions of the -functions involved, i.e., by jumping to its definition and evaluation it: - -@example -M-x find-function @key{RET} @var{function} @key{RET} C-M-f C-x C-e -@end example -@end ignore - -@item -Finally, include the exact key sequence which causes the problem into -your bug report. You should also tell me the name of the buffer in -which the problem occurred and how you have created that buffer (e.g., -by @kbd{C-x C-f @var{file} @key{RET}}). - -At best, you start your Emacs, and then try to reproduce the problem as -fast as possible (i.e., with a minimum number of key/mouse strokes). - -As soon as the problem appears, press @kbd{C-h l} and include the -contents of buffer @file{*Help*} in your bug report. - -(@emph{Rationale}: Most problems are only reproducible with point being -at a specific position in the file, with specific key sequences, etc.) - -@item -If you have problem with the display of images, please include the -output of the shell commands @samp{convert -h} and @samp{convert -list -Format} in your bug report. If the first command fails, you have a -problem with the program @code{convert}, not X-Symbol. - -@item -If necessary, include a screen-shot in your bug report. - -@item -If you could not use @kbd{M-x x-symbol-package-bug}, include the -contents of buffer @file{*Help*} after the following actions: - -@itemize @minus -@item -Type @kbd{C-h v x-symbol-version @key{RET}}. -@item -Type @kbd{C-h v emacs-version @key{RET}}. -@item -Type @kbd{C-h v features @key{RET}}. -@end itemize - -@end enumerate - -If you have solved your problem during this sequence, but you think your -situation is worth to be mention in this manual (e.g., in @ref{Package -Integration}), I would appreciate if you would send me a some new text -for this manual or a normal bug report together with your solution. - -@c =========================================================================== - -@node History, Indexes, Problems, Top -@comment node-name, next, previous, up -@chapter History and Projects - -@menu -* News:: Changes in recent versions. -* Emacs Version:: Beta Version which Works with Emacs -* Wishlist:: Projects for X-Symbol. -* Open Questions:: How you can contribute. -* Acknowledgments:: People having contributed. -@end menu - -@c =========================================================================== - -@node News, Emacs Version, History, History -@comment node-name, next, previous, up -@section News: Changes in Recent Versions of X-Symbol -@cindex New Features -@cindex Changes -@cindex History - -This is the complete history of X-Symbol. It just lists the major -changes before Version 3.0. - -@menu -* Changes New:: To be announced. -* Changes 4.4:: Released June 2002 as beta. -* Changes 4.1:: Released Mar 2002 as beta. -* Changes 3.4:: Released Mar 2002. -* Changes 3.3:: Released Jan 1999. -* Changes 3.2:: Released Dec 1998. -* Changes 3.1:: Released Oct 1998. -* Changes 3.0:: Released Sep 1998 as beta. -* Changes Old:: Overview of old releases. -@end menu - - -@node Changes New, Changes 4.4, News, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol @value{version} - -Version @value{version} has not yet been announced. - -@itemize @bullet -@item -X-Symbol finally respects the Mule coding system of each individual buffer. - -@item -Bug fix: would mess up encoding of math-mode characters with token -language @code{bib}. Other conversion fixes for languages @code{bib} -and @code{texi}. - -@item -Token language @code{sgml}: always encode characters to entity -references by default (not possible with most Latin-N characters, where -we still use character entities). Include @code{hm--html-mode}, -@code{html-helper-mode}, remove @code{sgml-mode} as typical major modes. - -@item -Token language @code{tex}: support some symbols of package -@file{stmaryrd.sty}. - -@item -Change the auto-style, formerly auto-mode, mechanism. - -@item -Image support when running on Emacs. - -@item -New input method Quail, a usual Mule input method. - -@item -Corrected Latin-5 definitions. Support Latin-5 (``Turkish'') on XEmacs -running under Windows/NT. - -@item -Improments for external languages. Super-/subscript matching of token -languages has changed. - -@item -X-Symbol can use package @code{format} and does not require special -fonts for super-/subscripts with Emacs-21.4+. Still open whether this -will be used@dots{}. - -@item -Various bug fixes and minor changes. -@end itemize - -@node Changes 4.4, Changes 4.1, Changes New, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 4.2, 4.3, 4.4 - -Version 4.4 has been released on June 2002 as beta. - -@itemize @bullet -@item -Token language TeX has changed: no excessive use of braces anymore, no -excessive normalization, and aware of environments @code{@{tabbing@}} and -@code{@{verbatim@}}, and macro @code{\verb}. Reading and saving -``old-encoded'' files works without changes in the file (the buffer -looks different), there is also a command to remove the unwanted braces -around accented letters. - -@item -New token language ``Bib@TeX{} Macro'' (@code{bib}, similar to old -@code{tex}), used for Bib@TeX{} files. - -@item -Nuked executables, the lisp conversion for all languages is now 2-5 -times faster. - -@item -Latin-9 support. Latin-9 font included in distribution. - -@item -Works with XEmacs-21.4+ on MS-Windows. Of course, it just supports a -limited number of characters and no super- and subscripts there due to -missing fonts. - -@item -More likely to save 8bit characters in the file by default: also look -for 8bit characters in the file when visiting the file, also inspect -master file (@code{TeX-master}) with token language @code{tex}. - -@item -New buffer-local variable @code{x-symbol-unique}: when non-@code{nil}, -decodes much less tokens to avoid near to all normalizations, used for -@TeX{}'s style files (but X-Symbol is not automatically turned on). -Dropped token language @code{utex}. - -@item -Menu changes, new commands: submenu ``Conversion'', menu items ``Copy -Encoded'', ``Paste Decoded'' and others. - -@item -Special coding for @code{preview-latex}. Using X-Symbol now only gives -a 10% overhead of @code{preview}s parsing time. - -@item -X-Symbol now works with Whizzy@TeX{}. - -@item -The interface for defining a token language has changed, it is also much -more general, useful for ProofGeneral. - -@item -Changed final bytes of ISO 2022 escape sequence for X-Symbol charsets -since Emacs reserves the characters @samp{0-9} for itself. Does XEmacs -has any policy here (it also uses @samp{?})? - -@item -Dropped workaround for minor bug in XEmacs-20.X. - -@item -Various bug fixes and minor changes. -@end itemize - - -@node Changes 4.1, Changes 3.4, Changes 4.4, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 4.1 - -Version 4.1 has been released on Mar 2002 as beta. - -@itemize @bullet -@item -X-Symbol works with Emacs-21.1 or higher. Porting is not complete, yet. - -@item -New token language ``@TeX{}info command'' (@code{texi}). - -@item -Slightly different definition of ``valid character''. - -@item -Remove the ``local if set'' and ``default: @dots{}'' submenu stuff. -@end itemize - - -@node Changes 3.4, Changes 3.3, Changes 4.1, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 3.4 - -Version 3.4 has been released on Mar 2002. - -@itemize @bullet -@item -Moved to SourceForge.net. Added files for nicer HTML output of manual. - -@item -Would sometimes perform strange conversions when -@code{global-flyspell-mode} is enabled. - -@item -Bug fixes: command @kbd{M-x write-region} would always save the whole -buffer if X-Symbol is enabled for that buffer, writing a remote file via -ange-ftp would not work (was OK with efs). - -@item -Automatically deduce default coding via @code{locale -ck LC_CTYPE}. - -@item -Issue warning when running on XEmacs-21.0 to XEmacs-21.1.8. Update -manual: XEmacs user package directory is @file{~/.xemacs/packages}. - -@item -Directories ending with @file{//} in image search paths are recursive. - -@item -New characters used for token languages ``@TeX{} macro'' and ``Isabelle -symbol''. - -@item -Make sure to convert just the first part of a multi-part image. - -@item -Source distribution includes files for building an RPM package, all -files also compile without Mule support. - -@item -Minor changes. Manual changes. -@end itemize - - -@node Changes 3.3, Changes 3.2, Changes 3.4, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 3.3 - -Version 3.3 has been released on Jan 1999. - -@itemize @bullet -@item -Package X-Symbol is really a proper XEmacs package: no need to create -fonts and to set the font path. With XEmacs/no-Mule, I still recommend -to create the executables (type @kbd{M-x x-symbol-exec-create}). - -@item -New functions used for interaction with Emacs package @code{comint}. -This is necessary for new token language ``Isabelle symbol'', to be -distributed with Emacs package -@uref{http://www.proofgeneral.org/,ProofGeneral}. - -@item -New characters used for token languages ``@TeX{} macro'' and ``Isabelle -symbol''. - -@item -Minor changes. Manual changes. -@end itemize - - -@node Changes 3.2, Changes 3.1, Changes 3.3, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 3.2 - -Version 3.2 has been released on Dec 1998. - -@itemize @bullet -@item -Package X-Symbol is a proper XEmacs package. The installation process -is much easier (using the binary package). It has changed, though! -The use of file @file{x-symbol-site.el} is deprecated. - -@item -Reverting the buffer and using @code{vc} commands do not encode -characters when not using @code{crypt}. (This did not work always.) - -@item -Workaround for bug (segfault) in XEmacs-21/Mule betas. - -@item -Command @code{x-symbol-package-bug} is less restrictive. Please use -this command to contact the maintainer. - -@item -Bug fixes. Minor changes. Manual changes. -@end itemize - - -@node Changes 3.1, Changes 3.0, Changes 3.2, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 3.1 - -Version 3.1 has been released on Oct 1998. - -@itemize @bullet -@item -@TeX{} macro @code{\mu} is represented by a character in the Adobe Symbol -font, not in a Latin-@{1,3,5@} font anymore. - -@item -Support for most @sc{sgml} entities in HTML-4.0 specification. - -@item -Additional characters for @code{\therefore}/@code{∴}, -@code{‾} and @code{€}. - -@item -Package X-Symbol has been customized. - -@item -The documentation has been completed (as @TeX{}info file). - -@item -Handle special URL prefixes @file{file:}, @file{http:} for images. - -@item -Bug fixes, configuration changes. -@end itemize - - -@node Changes 3.0, Changes Old, Changes 3.1, News -@comment node-name, next, previous, up -@subsection Changes in X-Symbol 3.0 - -Version 3.0 has been released on Sep 1998 as beta. - -@itemize @bullet -@item -Package X-Symbol now works on XEmacs with and without Mule support. -Dropped support for XEmacs 19.13 to 19.16/20.2. - -@item -Full support of token language @code{sgml} (executables, subscripts, images). - -@item -X-Symbol is a proper minor mode. - -@item -Easier (automatic) 8bit character control (e.g., for @code{\times} -@code{\pm},@dots{}). By default, the encoding when saving only writes -8bit characters, if @samp{\usepackage[latin@var{n}]@{inputenc@}} with -@var{n}=1,2,3,5 was found in the first 10000 characters of the file -(including commentary). - -@item -Package X-Symbol can be easily extended with new token languages and -fonts due to its modular design. It consistently handles situations -where an entry for an additional character defines the same preferred -key binding (and context) as for a previously defined character - -@item -Key bindings have completely changed. They are now consistent with the -contexts of input method Context (which have changed a bit). - -@item -The keys @kbd{@@} and @kbd{!} are not used anymore as Modify- and -Rotate-Key. The Rotate key (instead of the Modify-Key) is used to -``Greek''ify the previous Ascii char. - -@item -Input method Aggressive Context is now called input method Electric and -is much more restrictive (using package @code{texmathp} with language -``@TeX{} macro''). - -@item -Easier installation despite many additional features. - -@item -Supports more characters. - -@item -Nicer grid, info in echo area. - -@item -Better cooperation with packages: @code{vc} (check-out does not convert -characters), @code{reftex} (no strange characters @samp{\237}, help with -label creation), @code{auctex}, @code{ispell}, @code{font-latex} (no -annoyances with @code{\exists}). - -@item -Safer use of executables. - -@item -The code has completely changed. You have to redo your installation. -@end itemize - - -@node Changes Old, , Changes 3.0, News -@comment node-name, next, previous, up -@subsection Changes in Old Releases. - -This sections gives just an overview of the major changes in the releases. - -Version 2.6 has been released on Oct 1998. - -@itemize @bullet -@item -Fixed serious bug when used under tty. -@end itemize - -Version 2.5 has been released on Mar 1998. - -@itemize @bullet -@item -Image support. -@end itemize - -Version 2.4 has been released on Mar 1997. - -@itemize @bullet -@item -Token language @code{sgml}. (X-Symbol can handle more then token -language @code{tex}.) - -@item -Input method Aggressive Context (precursor of input method Electric), -input method Context has been much improved. - -@item -Fixed performance bug when saving a file with package @code{crypt}. - -@item -Control of Conversion and 8bit character has changed. -@end itemize - -Version 2.3 has been released on Sep 1996. - -@itemize @bullet -@item -Distributed with own font for more math characters. - -@item -Info for the character around point in echo area. -@end itemize - -Version 2.2 has been released on June 1996. - -@itemize @bullet -@item -Input method Grid. Help when using input method Keyboard. - -@item -Control of Conversion and 8bit character has changed. -@end itemize - -Version 2.1 has been released on April 1996. - -@itemize @bullet -@item -Fixed serious performance bug when loading files with -font-lock/lazy-lock. Use executables for conversion of large buffers. - -@item -The package @code{iso-cvt} is not integrated anymore. Now this package -can also convert to/from Latin-1 characters, it is much faster. - -@item -Menu support, including input method Menu. - -@item -@code{isearch} works with X-Symbol characters. - -@item -First multi-file version. -@end itemize - -Version 1.4 has been released on Feb 1996. - -@itemize @bullet -@item -Provide some kind of ``poor man's Mule'' to remove most Nomule-Problems. -@end itemize - -Version 1.3 has been released on Jan 1996. - -@itemize @bullet -@item -Input method Abbrev (precursor of input method Token). - -@item -Super-/subscript support. -@end itemize - -Version 1.2 has been released on Jan 1996. It was the first release. - -@itemize @bullet -@item -Conversion between characters and @TeX{} tokens. Do so automatically -when visiting a file and saving the buffer. - -@item -Input method Keyboard. -@end itemize - -@c =========================================================================== - -@node Emacs Version, Wishlist, News, History -@comment node-name, next, previous, up -@section Beta Version which Works with Emacs -@cindex Emacs Version -@cindex Beta Version -@cindex Development Version -@cindex Helpers for Emacs Version -@cindex Looking for Helpers -@cindex Gnu Emacs Version -@cindex Your Contribution - -You are reading the manual for the development (beta) version of -X-Symbol which works with Emacs-21.1. This version is also superior in -other aspects to the stable version 3.4.2. - -For details and updates, please check the -@uref{@value{http}/news.html, web pages of X-Symbol}. - -@c ==================================================================== - -@node Wishlist, Open Questions, Emacs Version, History -@comment node-name, next, previous, up -@section Wishlist: Projects for X-Symbol -@cindex Wishlist -@cindex Project -@cindex Future Features -@cindex Contributions -@cindex Your Contribution - -You are encouraged to try to provide a solution to one of the problems -of this section. In fact, it is quite unlikely that I do it myself -without any contributions from you, see also @ref{Open Questions}. - -Providing a solution to these problems is the second way of making your -name appear in @ref{Acknowledgments}. - -@menu -* Wishlist Languages:: Additional token languages. -* Wishlist Fonts:: Automatically generated fonts. -* Wishlist Emacs:: Changes in Emacs/XEmacs. -* Wishlist LaTeX:: Changes in La@TeX{}. -* Wishlist Various:: Other changes. -* Wishlist Rejected:: Rejected Suggestions for X-Symbol. -@end menu - - - -@node Wishlist Languages, Wishlist Fonts, Wishlist, Wishlist -@comment node-name, next, previous, up -@subsection Wishlist: Additional Token Languages -@cindex More Token Languages -@cindex Language Additions -@cindex Ams@TeX{} -@cindex IPA Fonts - -Making a contribution here would require just a basic knowledge of Emacs -and X-Symbol. In fact, I would do the non-trivial part of the Elisp -part (@pxref{Extending X-Symbol}) for general-interest token languages -(e.g., Ams@TeX{}). - -It is likely that this would require additional fonts: available fonts -(e.g., IPA font), hand-crafted, or generated (@pxref{Wishlist -Fonts}). - - -@node Wishlist Fonts, Wishlist Emacs, Wishlist Languages, Wishlist -@comment node-name, next, previous, up -@subsection Wishlist: Generated Fonts -@cindex Generated Fonts -@cindex Fonts from Other Sources -@cindex Fonts for MS-Windows -@cindex MS-Windows Fonts - -@pindex bdftofon -One direction of font generation would be from @file{.bdf} or -@file{.pcf} font files to MS-Windows fonts to get rid of the limited -support for XEmacs on MS-Windows (@pxref{Requirements}). If you have -successfully converted X-Symbol's fonts from the Unix format to the -MS-Windows format (via @code{bdftofon} or whatever) or if you have free -and real Latin-N fonts for MS-Windows, please @emph{let me know}! I -would also appreciate if you would actively try to get those missing -MS-Windows fonts. - -Solofo Ramangalahy suggests to automatically generate the @file{.bdf} -fonts from other sources. This would have various advantages: - -@itemize @bullet -@item -We could easily create different sizes for our symbol font. - -@item -It would be quite simple to create a @file{.bdf} font for Ams@TeX{} -macros, calligraphical letters etc, which would be displayed as X-Symbol -characters by package X-Symbol. - -@item -We could easily create different sizes for our symbol font. -@end itemize - -Solofo has worked on Postscript fonts. Although the results are good -for big sizes, this cannot replace bdf fonts for ``small'' sizes like -14. Besides, the X font server is not very good for postscript fonts -(compared with ATM where you have anti-aliasing for example). Now that -XEmacs run under windows, it may be that the result is better under -MS-Windows than under Unix. This has not been tested. - -An other possibility is to use true type fonts as true type font servers -can achieve better results with good hinted fonts. This has not been -done yet. - -There are also some problems which are not optimally solved in the current -xsymb font either: - -@itemize @bullet -@item -Different @TeX{} macros (same appearance, different @TeX{} class = -different spacing) use the same MetaFont character, e.g., @code{\dagger} -and @code{\dag}. Therefore, we need different X11 characters for them. - -@item -Some Ascii characters have a special meaning in @TeX{}. The -corresponding MetaFont character is therefore produced by a TeX macro, -e.g., @samp{@{} by @code{\@{}. We need a X11 character which looks -similar to the character but not exactly like it. -@end itemize - -We could ask the question whether we should really distinguish the -characters by appearance@dots{}we have the minibuffer info for the -X-Symbol character anyway@dots{}. Here are the options: - -@itemize @minus -@item -distinguished by size/underlining/miscellaneous (currently used), -@item -distinguished by different spacing (my current favorite), -@item -not distinguished -@end itemize - -Solofo Ramangalahy originally though of generating the @file{.bdf} fonts -out of @TeX{} fonts (@file{.mf}, @file{.pk}) by @code{mftobdf} of -See@TeX{}, which can be found at @file{@var{ctan}/dviware/seetex/} among -others distributions having this tool. He dropped this idea for the -following reason: - -@quotation -The created fonts need some correction by hand, since it's difficult to -make good fonts at small size. MF fonts were created to be printed at -high resolutions (in the MetaFont book, cheapo is 200 pixel per inch, -resolution of screens are around 100 pixel per inch). The parameters -@samp{blacker}, @samp{fillin} and @samp{o_correction} are not sufficient -for tuning the computer modern fonts at low resolutions (they will not -do the job of hints of a postscript font). -@end quotation - -@node Wishlist Emacs, Wishlist LaTeX, Wishlist Fonts, Wishlist -@comment node-name, next, previous, up -@subsection Wishlist: Changes in Emacs/XEmacs -@cindex Emacs Changes -@cindex XEmacs Changes -@cindex Changes in Emacs -@cindex Changes in XEmacs - -Changes in Emacs and/or XEmacs would improve package X-Symbol, too: - -@itemize @bullet -@item -In Emacs: a package system similar to XEmacs' one. The installation -would be easier. - -@item -@pindex ispell -The package @code{ispell} assumes the buffer contents to be the same as -the file contents and does not provide any hook to fix this. This -should be fixed in @code{ispell}, @ref{Miscellaneous Packages}. - -@item -@pindex vc -Some versions control commands turn off @code{font-lock}. This should -be changed. - -@item -Provide a face property @code{raise}: we wouldn't need extra fonts for -super- and subscripts. Emacs: it's already a display property, make it -a face property, too (or make @code{font-lock} set properties other than -faces). XEmacs: no such property, yet. - -@item -@vindex after-insert-file-functions -In XEmacs, fixed in 21.X. In @code{after-insert-file-functions}, there -should be a possibility to get to know the start position of the region -which is inserted. If @code{insert-file-contents} is called with -argument @code{replace} being non-@code{nil}, it is not always point. - -@item -@vindex write-region-annotate-functions -Partly fixed in Emacs-21.3. Make possibility to change buffers in -@code{write-region-annotate-functions} official, see @ref{Alt Auto -Conversion}, have a way to get the original buffer. - -@item -Since @code{font-lock} uses duplicable text properties in some cases, I -need a function like @code{insert-buffer-substring-without-extents}. -(Currently, I remove the extents afterwards, which looks slow for me.) - -@item -@vindex post-command-hook -In XEmacs. Run hooks in @code{post-command-hook} even if command exits -with an error or quit (as it is in Emacs) or having some -@code{post-error-or-quit-hook}. @xref{Nomule Problems}. - -@item -In XEmacs. There are some bugs in package @code{custom}/@code{widget} -(XEmacs-21.0-b59) which are visible during the customization of -X-Symbol. - -@end itemize - - -@node Wishlist LaTeX, Wishlist Various, Wishlist Emacs, Wishlist -@comment node-name, next, previous, up -@subsection Wishlist: Changes in La@TeX{} -@cindex La@TeX{} Changes -@cindex Changes in La@TeX{} -@cindex @file{inputenc.sty} Changes -@pindex @file{inputenc.sty} - -Changes in La@TeX{}, especially @file{inputenc.sty}, would improve package -X-Symbol, too: - -@itemize @bullet -@item -To make the definition of the character U00B5 consistent with Unicode, -@file{inputenc.sty} should define the character to stand not for the -token @code{\mu} (U03BC is the right character), but for an extra token, -e.g., something like @code{\textmicro}. X-Symbol uses @code{\mathmicro} -here in order to avoid changing @code{\mu} to the character U00B5 if you -have chosen to store 8bit characters. -@c X-Symbol should not define it as \textmicro because then there would -@c be a major difference between `x-symbol-8bits' nil and non-nil. - -@item -Use same encoding for both text and math, i.e. use @code{periodcentered} -for both @code{\textperiodcentered} (the default) and @code{\cdot}. At -least provide text-and-math versions for characters where no alternative -is more obvious than the other. If that is not possible, always choose -text mode except for @code{\lnot}, @code{\pm}, @code{\times} and -@code{\division}: use -@code{\textonesuperior} for U00B9, \texttwosuperior for U00B2, and -@code{\textthreesuperior} for U00B3. - -@item -The @TeX{} macros @code{\textcent}, @code{\textcurrency}, -@code{\textbrokenbar}, @code{\textyen} are defined as not available with -OT1 and T1 font encoding. This should be changed. -@end itemize - - -@node Wishlist Various, Wishlist Rejected, Wishlist LaTeX, Wishlist -@comment node-name, next, previous, up -@subsection Various Projects for X-Symbol - -The following suggestions seem to be useful, though not essential: - -@itemize @bullet -@item -@cindex Print Buffer -@cindex Buffer Printing -@pindex ps-print -It would be nice if we could print the buffer contents. Currently, you -see strange characters instead X-Symbol's own characters. - -Printing non-standard fonts is only possible via the Emacs package -@code{ps-print}. A newer version of @code{ps-print} might be probably -already capable of doing it. Thus, you are encouraged to help the -XEmacs team updating this package. -@end itemize - - -@node Wishlist Rejected, , Wishlist Various, Wishlist -@comment node-name, next, previous, up -@subsection Rejected Suggestions for X-Symbol -@cindex Rejected Suggestions - -The following suggestions seem to be not useful enough to be worth the -additional effort and increased package size. I might be convinced -otherwise by patches (i.e., code, not text), though: - -@itemize @bullet -@item -@cindex Input Method Token -It would be nice if X-Symbol would replace the token with the last -character of the token if this is possible (@pxref{Input Method Token}), -not just with the next character. Well, during typing, this is not -really annoying and after a while, you will use input method Token only -for very short tokens. -@end itemize - -@c =========================================================================== - -@node Open Questions, Acknowledgments, Wishlist, History -@comment node-name, next, previous, up -@section Open Questions -@cindex Open Questions -@cindex Various Questions -@cindex Questions I Have - -This section lists some minor open questions. - -@itemize @bullet -@item -@findex x-symbol-initialize -@cindex Auto Initialization -Loading file @file{x-symbol.el} will initialize package X-Symbol (via -function @code{x-symbol-initialize}), since all functions will need the -initialization. In my opinion, this is no problem, since all -customization options are defined an other files which do not require -file @file{x-symbol.el}. Thus, customizing package X-Symbol will not -initialize package X-Symbol. - -The alternative would be to call function @code{x-symbol-initialize} in -every function which can be autoloaded. This seems quite tedious to -me. Also, I do not see a reason not to call @code{x-symbol-initialize} -top-level in file @file{x-symbol.el}. If I am wrong here, please let me -know (with an explanation). Batch-compilation might be an issue@dots{} - -@item -@pindex crypt -@vindex x-symbol-auto-conversion-method -When is necessary to set @code{x-symbol-auto-conversion-method} to -@code{slowest}? Of course, it is only necessary when using -@code{crypt}. Is the other necessary condition to use the computer pool -of the University of Edinburgh? -@end itemize - -@c =========================================================================== - -@node Acknowledgments, , Open Questions, History -@comment node-name, next, previous, up -@section Acknowledgments -@cindex Acknowledgments -@cindex Contributions -@cindex Marlet, Renaud -@cindex Bradfield, Julien -@pindex math-mode -@cindex Adobe -@pindex frame-icon -@cindex Thanks - -Stefan Monnier did many of the changes necessary for porting X-Symbol to -Emacs-21. Fortunately, he not only changed X-Symbol to use a quite -different API on Emacs for things like charsets and menus, he also made -the necessary changes in Emacs itself. Before that, Sang-Min Lee -started porting X-Symbol to Emacs-20.4, which was important for moving -the status of the Emacs port of X-Symbol from ``todo'' to ``in work''. - -David Kastrup demonstrated that the old way of encoding characters to -@TeX{} macros generally inhibited ligatures and kerns, i.e., it was -worse than expected. He also discussed the details of how to do the -encoding and decoding right. Christophe Raffalli suggested to use a -decode method which can be used for a larger class of token languages. -He also proved that it is faster. - -Package @code{math-mode} by Renaud Marlet and the extension of it by -Julian Bradfield gave the basic idea for the following features: -supporting @TeX{}'s math macros, input methods token, context/electric, -super-/subscript support. The shell script @code{makesub} is a merge -and change of the scripts @code{makesupers} and @code{makesub} by -Julian. - -The font @samp{xsymb0}, which is distributed with this package, is a -minor modification (appearance) of the Adobe symbol font, thanks to its -non-restrictive copyright. You may use the Adobe font instead. The -special images are from package @code{frame-icon}. - -The idea for Help during an X-Symbol key sequence is from package -@code{x-compose}. The general idea for showing some info in the echo -area is from package @code{eldoc}. The trick which stops -@code{expand-abbrev} is from package @code{mail-abbrevs}. The idea for -@code{x-symbol-image-cache-directories} is from package -@code{fast-lock}. The code for image command parsing is influenced by -some code in package @code{font-lock}. The code around -@code{x-symbol-image-delete-extents} is based on some code in package -@code{bib-cite}. - -@i{Thanks for patches/reports/suggestions to}: Vladimir Alexiev, David -Aspinall, Masayuki Ataka, Neal Becker, Matthias Berberich, Stefano -Bianchi, Janusz S. Bien, Uwe Brauer, Alastair Burt, John Collins, -Laurent Descamps, Frederic Devernay, Carsten Dominik, Steve Dunham, -Michael Ebner, Stephen Eglen, Paul Furnanz, Jeffrey Grandy, Clemens -Gr@"opl, Kenichi Handa, Meik Hellmund, Ryurick M. Hristev, Adriaan -Joubert, Marcin Kasperski, David Kastrup, Richard Ketchersid, Thomas -Kleymann, Ekkehard Koehler, Fred Labrosse, Jan-Ake Larsson, Bernhard -Lehner, Stefan Monnier, Harald Muehlboeck, Karsten Muehlmann, Jakub -Narebski, Peter M@o{}ller Neergaard, Raymond Nijssen, David von Oheimb, -Alex Ott, Sudeep Kumar Palat, Arshak Petrosyan, Jim Radford, Christophe -Raffalli, Solofo Ramangalahy, Marciano Siniscalchi, Richard M. Stallman, -Alex Russell, Eli Tziperman, Jan Vroonhof, Markus Wenzel, Sabine Wetzel, -Pierre-Henri Wuillemin, Roland Zumkeller, Marco Zunino, Gerard Zwaan. - -@i{Thanks for general information to:} Per Abrahamsen, Steve L. Baur, -Kenichi Handa, David Kastrup, Gerd Moellmann, Stefan Monnier, Primoz -Peterlin, Martin Ramsch, Peter Schmitt, Toby Speight, Jan Vroonhof, Eli -Zaretskii. - -I made use of information from the following URLs: - -@display - @url{http://www.w3.org/TR/REC-html40/sgml/entities.html} - @url{http://www.fmi.uni-passau.de/~ramsch/iso8859-1.html} - @url{http://czyborra.com/charsets/iso8859.html} - @url{http://www.bbsinc.com/iso8859.html} - @url{http://www.bbsinc.com/iso8879.html} - @url{http://ppewww.ph.gla.ac.uk/~flavell/charset/internat.html} - @url{http://ppewww.ph.gla.ac.uk/~flavell/iso8859/iso8859-pointers.html} - @url{http://sizif.mf.uni-lj.si/linux/cee/iso8859-2.html} -@end display - -I do not intend to update this list in the future---this is just an -"Acknowledgment" section. - - -@node Indexes, , History, Top -@comment node-name, next, previous, up@unnumbered Indexes -@unnumbered Indexes - -You should consult the following indexes if you are interested in a -specific feature or aspect of package X-Symbol. You should also consult -them before sending a report to the maintainer (@pxref{Bug Reports}), - -@menu -* Key Index:: Key sequences. -* Program Index:: Programs and Emacs packages. -* Variable Index:: Commands, functions, variables. -* Concept Index:: Various topics. -@end menu - -The links lead you to the manual sections describing X-Symbol's commands -and variables. @xref{About}. - -@comment workaround for bug with the length of the lists -@iftex -@vskip 6ex plus 1ex minus 4ex -@end iftex - -@node Key Index, Program Index, Indexes, Indexes -@comment node-name, next, previous, up -@unnumberedsec Key Index -@printindex ky - -@comment workaround for bug with the length of the lists -@iftex -@page -@end iftex - -@node Program Index, Variable Index, Key Index, Indexes -@comment node-name, next, previous, up -@unnumberedsec Program and Package Index -@printindex pg - -@comment workaround for bug with the length of the lists -@iftex -@page -@end iftex - -@node Variable Index, Concept Index, Program Index, Indexes -@comment node-name, next, previous, up -@unnumberedsec Command, Function and Variable Index -@printindex vr - -@comment workaround for bug with the length of the lists -@iftex -@page -@end iftex -@node Concept Index, , Variable Index, Indexes -@comment node-name, next, previous, up -@unnumberedsec Concept Index -@printindex cp - -@contents -@bye -@c Local IspellPersDict: .ispell_xsymb |