在Linux下使用丹麦语/其他国际语言 HOWTO <author> 作者: Niels Kristian Bech Jensen <tt/nkbj@sslug.dk/<newline> 译者: 曾慧涵 <tt/azurlachesis@msn.com/ <date>v2.6, 9 March 2000 <abstract> <nidx>Danish language support (see Danish)</nidx> <nidx>Danish</nidx> 这份文件叙述如何为 Linux 及 Linux 相关应用程式丹麦语化, 包括键盘设置, 字型, 纸张大小等. 希望其他西欧语系的 Linux 使用者也能从这份文件中获益. </abstract> <toc> <sect>导言 <nidx>Danish!introduction</nidx> <p> 几乎所有欧洲的作业系统使用者都会遇到以下两个问题: 第一, 如何让电脑知道你使用的是非美系的键盘; 第二, 如何让电脑显示特殊字元. 更糟糕的是, 有些应用程式会因为你不是美国人而要求你做特殊设定, 或是更改环境变数. 在 Linux 里, 你可以用指令<tt/loadkeys/ 和 <tt/xmodmap/ 来改变键盘设定. <tt/loadkeys/ 指令只更改纯 Linux 环境下的键盘, 而 <tt/xmodmap/ 在 Linux 和 X11 之间交换字元的程序不完整时, 会做适当的调整. 为了要正确显示字元, 你必需告诉应用程式你使用的是 ISO-8859-1 ( 亦即Latin-1) 的国际字元集. 对某些常用的应用程式来说, 这是必要的步骤. 这份 HOWTO 文件目的在於告诉丹麦语使用者如何读写丹麦语. 如果在阅读这份文件後, 你还是碰到问题, 请参考德语 HOWTO, Linux 键盘和控制台 HOWTO , 或是 ISO 8859-1 National Character Set FAQ. 本文件中许多的提示说明都是出自这三份文件的内容. 请参见 <ref id="docs" name="其他相关文件"> 来连结到这些文件. 同时, 请你寄信给我, 并叙述你碰到的问题. 最後一个问题是: 许多应用程式的错误讯息, 选单和说明文件都是英文的. 有一个 GNU 计划正在著手解决这个问题. 你可以从你喜爱的 GNU 映射站中下载 <tt/ABOUT-NLS/ 或是 <tt/gettext-0.10.tar.gz/ 包裹以了解此计划. 这个计划需要自愿者参与翻译工作. 如果你想要为计划中的丹麦语部份出力, 请寄信到 <tt/da-request@li.org/ 并在内容写上 "subscribe". <tt/gettext/ 中的说明文件会告诉你如何在你的程式中使用翻译. <sect>设定键盘 <nidx>Danish!keyboard configuration</nidx> <sect1>载入键盘表 (keytable)<label id="loadkbd"> <nidx>Danish!keytable, loading</nidx> <p> 你可使用两个工具来设定你的键盘. 在纯 Linux 环境下, 你可以用<tt/loadkeys/ , 而在 X11 下则用 <tt/xmodmap/. 欲使用 <tt/loadkeys/ 指令, 你可以执行: <verb> loadkeys /usr/lib/kbd/keytables/dk.map </verb> 或 <verb> loadkeys /usr/lib/kbd/keytables/dk-latin1.map </verb> 这两个键盘对应表 (keymap) 的差异在於, <tt>dk-latin1.map</tt> 可以使用死键, 而 <tt>dk.map</tt> 不行. 死键在 <ref id="deadkeys" name="死键和重音字元"> 中会解释到. <tt/loadkeys/ 和 keymap 都是 Linux 里通行的 <tt/kbd-0.??.tar.gz/ ( ?? 代表不同版本) 包裹中的一部份. <tt/loadkeys/ 通常是在系统启动时, 从 <tt>/etc/rc.d/</tt> 目录下的某一个命令稿 (script) 执行的. 不同的系统和版本作法各不相同. (注, 给非丹麦语读者: 其他语系的支援也是以类似方法设定的, 例如西班牙语键盘是用 <tt/es.map/ .) XFree86 从 3.1.2 以上的版本 (包括3.1.2) 通常都使用纯 Linux 环境下的 keymap, 但在 X11 下你可以用 <tt/xmodmap/ 来改变键盘设定. 如果在你的 home 目录下有一个叫 <tt>.Xmodmap</tt> 的档案, X11 就会在启动时自动替你执行这个指令. 若使用版本 3.2 以上的 XFree86, 在你的 <tt>/etc/XF86Config</tt> (或 <tt>/etc/X11/XF86Config</tt>) 档案中, 应有一个<tt/Keyboard/ 区块如下列 ( 如果选择使用丹麦语的 keytable, 一个叫 <tt/XF86Setup/ 的程式应该会自动替你做好这件事) : <verb> Section "Keyboard" Protocol "Standard" XkbRules "xfree86" XkbModel "pc101" XkbLayout "dk" XkbVariant "nodeadkeys" EndSection </verb> 目前只有<tt/"nodeadkeys"/ 是可用的键盘变数, 但你仍可以设定死键. 请参见 <ref id="deadkeys" name="死键和重音字元"> 以得到更多资讯. <sect1>在 X11 下使用 AltGr 键 <nidx>Danish!AltGr key</nidx> <nidx>Danish!X!AltGr key</nidx> <p> 若使用版本 3.1.2 以上的 XFree86 (包括 3.1.2), 你应该修改档案 <tt>/etc/XF86Config</tt> (或 <tt>/etc/X11/XF86Config</tt>) 并确定以下这行 <verb> RightAlt ModeShift </verb> 出现在 <tt>Keyboard</tt> 区块中. 通常, 你只需要在适当的地方移去注解符号即可. 在版本 3.1.2 的 XFree86 中, 你可用 <tt/AltGr/ 作为 <tt/RightAlt/ 的别键. 如果你有选择丹麦语的键盘支援, <tt/AltGr/ 键在版本 3.2 以上的 XFree86 应会如预期地发挥作用. <sect2>在 Metro-X 下使用 {, [, ] 和 } <nidx>Danish!X!Metro-X</nidx> <p> 在 Metro-X 伺服器下, 你将无法输入 ``{'' <tt/(<AltGr><7>)/, ``['' <tt/(<AltGr><8>)/, ``]'' <tt/(<AltGr><9>)/ 和 ``}'' <tt/(<AltGr><0>)/ 等字元. 这个 bug 会在 3.1.5 和 3.1.8 的伺服器版本中出现. 要修正这个 bug, 你必须修改档名叫作 <tt>/usr/X11R6/lib/X11/xkb/symbols/dk</tt> 的档案并把以下句子: <verb> key <AE07> { [ 7, slash ] }; key <AE08> { [ 8, parenleft ] }; key <AE09> { [ 9, parenright ] }; key <AE10> { [ 0, equal ] }; </verb> 改成 <verb> key <AE07> { [ 7, slash ], [ braceleft, NoSymbol ] }; key <AE08> { [ 8, parenleft ], [ bracketleft, NoSymbol ] }; key <AE09> { [ 9, parenright ], [ bracketright, NoSymbol ] }; key <AE10> { [ 0, equal ], [ braceright, NoSymbol ] }; </verb> <sect1>死键和重音字元<label id="deadkeys"> <nidx>Danish!dead keys</nidx> <p> 所谓死键, 就是在按下之後, 还必须再按其他键才能够作用的键. 你如果是在纯 Linux 环境下使用 <tt>dk-latin1.map</tt> keymap, 那颚化符号 (tilde, 译注: 例如西班牙语字母上的~) 和变音 (umlaut, 译注: 字母上加两点) 都是死键. 另外, 在微软视窗作业系统下, 键盘预设也是如此. <sect2>移除死键功能 <nidx>Danish!dead keys!removing</nidx> <p> <itemize> <item>在纯 Linux 与 XFree86 v3.1.2 环境下移除死键功能 在纯 Linux 环境下, 输入 <verb> loadkeys dk.map </verb> <item>在版本 3.2 以上的 XFree86 中移除死键功能 在档案 <tt>/etc/XF86Config</tt> (或 <tt>/etc/X11/XF86Config</tt>) 中, 在 <tt/Keyboard/ 区块中加入句子: <verb> XkbVariant "nodeadkeys" </verb> </itemize> <sect2>启动死键功能 <nidx>Danish!dead keys!invoking</nidx> <p> <itemize> <item>在纯 Linux 环境下启动死键功能. 在纯 Linux 环境下输入 <verb> loadkeys dk-latin1.map </verb> <item>在 X11R6 下启动死键功能. 首先, 确认你跑的是版本 3.1.2 以上的 XFree86. 如果你的版本低於 3.1.2, 你必须下载并安装所有和最新版本相关的档案. 在 X11R6 应用程式中, 要使用排字 (compose) 或死键, 就必须将程式和重音字元 (8-bit) 支援一起编译. <tt/GNU emacs/ v. 19.30 (或更高的版本) 是一个例子. 然而, 某些 X11 应用程式依然不支援这种输入法. 面对这个问题, 你可以选择修改你的程式, 或是寄一封修辞温和的 bug 报告给程式作者. 後者是比较有效的解决之道. 请参见 <ref id="programming" name="在 X11下编写程式的一些小技巧"> 以获得相关资讯. 接下来, 你需要将一个键对应到 <tt/Multi_key/ (<tt/Compose/.) 若你使用版本 3.1.2 的 XFree86, <tt>Scroll Lock</tt> 键很可能已经被对应了(你可以用 <tt/xev/ 这个程式修改设定). 如果要对应右边的 <tt/Control/ 键, 你只需要在 XFree86 的 configuration file (通常是 <tt>/etc/XF86Config</tt> 或 <tt>/etc/X11/XF86Config</tt>) 中的 <tt/Keyboard/ 区块里去掉若干注解符号即可. 若你想使用其他的键, 或者你是用版本 3.1.2 以上的 XFree86 而且你想改变预设, 你可以在档案 <tt>˜/.Xmodmap</tt> 中加入: <verb> keycode 78 = Multi_key </verb> 上面这一行□例做的是定义 <tt/Scroll Lock/ 键为 <tt/Compose/ 键. 在版本 3.2 以上的 XFree86 中, 预设的 <tt/Compose/ 键是 <tt><Shift><AltGr></tt>. 版本 3.2 以上的 XFree86 并不支援在标准丹麦键盘使用死键. 要启动死键, 在档案 <tt>/usr/X11R6/lib/X11/xkb/symbols/dk</tt> 的 <tt/xkb_symbols "basic"/ 区块中修改这几行: <verb> key <AE12> { [ acute, grave ], [ bar, dead_ogonek ] }; key <AD12> { [ diaeresis, asciicircum ], [ asciitilde, dead_macron ] }; </verb> 把它改成 <verb> key <AE12> { [ dead_acute, dead_grave ], [ bar, dead_ogonek ] }; key <AD12> { [ dead_diaeresis, dead_circumflex ], [ dead_tilde, dead_macron ] }; </verb> 接下来, 移除档案 <tt>/etc/XF86Config</tt> (或 <tt>/etc/X11/XF86Config</tt>) 中 <tt/Keyboard/ 区块里的这一行: <verb> XkbVariant "nodeadkeys" </verb> (注, 给非丹麦语读者: 在 <tt>/usr/X11R6/lib/X11/xkb/symbols</tt> 中有各种语系 keymap 的档案.) 可能的字元对应表列於档案 <tt>/usr/X11R6/lib/X11/locale/iso8859-1/Compose</tt> 中. 这个档案里有一些你或许会想修正的 bug: <itemize> <item>下面这一行 <verb> <dead_tilde> <space> : "~" tilde </verb> 应被改为 <verb> <dead_tilde> <space> : "~" asciitilde </verb> <item>在某些地方, <tt/asciicircum/ 被误拼为 <tt/asciicirum/ </itemize> 最後, 确定你的 shell (或者还有应用程式) 已经如 <ref id="apps" name="特定应用程式中的国际字元集"> 中所叙述的, 做好 ISO-8859-1 相容性的设定. </itemize> <sect1> 使用 $ (钱符号), ø (oslash) 和 Ø (Oslash) 字元 <nidx>Danish!setting up $, ø, Ø</nidx> <sect2>$ (the dollar sign) <nidx>Danish!setting up $</nidx> <p> 丹麦 keymap 中有个 bug 会使钱符号的对应键组合为 <tt><Shift><4></tt>, 而不是 <tt><AltGr><4></tt>. 若你有这个问题, 请查看你在启动系统时载入的是哪个 keymap. 这项设定位於 <tt>/etc/rc.d/</tt> 目录下, 或者你也可以在启动系统时注意一下. 在我的电脑上, 我的 keymap 是叫 <tt>/usr/lib/kbd/keytables/dk-latin1.map</tt>. 你可以改 keymap 档案中的 <verb> keycode 5 = four dollar dollar </verb> 这一行改成 <verb> keycode 5 = four currency dollar </verb> 然後如 <ref id="loadkbd" name="载入 keytable"> 所述, (重新)载入 keytable. 货币符号 (dansk: ``soltegn'') 在丹麦键盘上的预设是 <tt><Shift><4></tt>. 以上的方法在 X11 和 Linux 环境下应该都能通行. <sect2>ø (oslash) 和 Ø (Oslash) <nidx>Danish!setting up ø, Ø</nidx> <p> 在某些比较旧的系统里, ``ø'' and ``Ø'' 以分 (cent) 或圆 (yen)的形态出现. 在你的 keymap 档案中, 可以找到 keycode 40 的这一行句子: <verb> keycode 40 = cent yen </verb> 你可以把它改为 <verb> keycode 40 = +oslash +Ooblique </verb> 此 bug 已在 <tt/kbd-0.88.tar.gz/ 以上的版本中修正. 为了让 <tt/Caps Lock/ 正常运作, 那个 + 符号是必要的. 在 <tt/kbd-0.90.tar.gz/ 或更新的版本中, ``Oslash'' 常用来当作 ``Ooblique'' 的别名. 你可以在<url url="http://www.ibbnet.nl/~anne/keyboard.html" name="这里">得到更多资讯. <sect>设定显示和应用程式 <nidx>Danish!display configuration</nidx> <nidx>Danish!application configuration</nidx> <p> 大部份的应用程式必须被编译为 ``8-bit-clean'' 才能成功使用欧洲的字元, 有些甚至还需要额外的一些修改. <sect1>在控制台中载入 ISO-8859-1 字型 <nidx>Danish!application!font loading</nidx> <nidx>Danish!application!ISO-8859-1 font</nidx> <p> 在 shell 提示字元後执行以下指令: <verb> setfont lat1u-16.psf </verb> 在 Red Hat Linux 5.2 或更新的版本下, 你可以在档案 <tt>/etc/sysconfig/i18n</tt> 中加入下列句子: <verb> SYSFONT=lat1u-16.psf SYSTERM=linux </verb> 由於 Red Hat Linux 5.2 的 <tt/ncurses/ 包裹中有 bug, 你得把档案 <tt>/etc/profile.d/lang.sh</tt> 中的 ``linux-lat'' 改为 ``linux''. Red Hat Linux 6.0 则没有此问题. <sect1>欧元符号 <nidx>Danish!the Euro symbol</nidx> <p> 丹麦字元集里新增了一个符号: 欧元符号 (欧洲货币联盟的新币值). 新的字元集叫作 ISO-8859-15, 也就是 latin0 (或 latin9) 以取代原先的 ISO-8859-1 (latin1). 为取得 latin0 支援, 你必须使用 <url name="EURO" url="ftp://ftp.freshmeat.net/pub/euro-patch/"> 包裹. 这个包裹中包含字型和 keymap. <sect1>Linux 环境下可显示的字元 <nidx>Danish!displayable characters</nidx> <p> 在字元提示输入 <tt>dumpkeys -l | less</tt> 即可知道哪些字元是可用的. 你可以依 <ref id="loadkbd" name="载入 keytable"> 中所述的将它对应到你的键盘. <sect1>特定应用程式中的国际字元集<label id="apps"> <nidx>Danish!applications!character sets in</nidx> <p> 某些应用程式需要特殊的设定. 本节旨在叙述设定的方法. <descrip> <tag/<tt>bash</tt>:/ <nidx>Danish!applications!bash</nidx> 在档案 <tt>˜/.inputrc</tt> 中加入: <verb> set meta-flag on set convert-meta off set output-meta on </verb> <tag/<tt>elm</tt>:/ <nidx>Danish!applications!elm</nidx> 在档案 <tt>˜/.elm/elmrc</tt> 中加入以下定义: <verb> charset = iso-8859-1 displaycharset = iso-8859-1 textencoding = 8bit </verb> 某些版本 <tt/elm/ 不接受这样的设定. 若使用<tt/metamail/, 则可以在 <tt/elm/ 中得到部份的 <bf/MIME/ 支援. <tag/<tt>emacs</tt>:/ <nidx>Danish!applications!emacs</nidx> 在档案 <tt>˜/.emacs</tt> 或整个系统的初始设定档 (通常是 <tt>/usr/lib/emacs/site-lisp/default.el</tt> 或 <tt>/usr/share/emacs/site-lisp/default.el</tt>) 中加入以下行列: <verb> (standard-display-european t) (set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 0) </verb> 若你使用 GNU emacs v19.30 以上的版本, 或是 XFree86 v3.1.2 以上的版本, 在 GNU emacs 里你应该可以使用死键 (对我而言, 两者都没问题); 因此你将不需要特地去找像是有 ``electric keys'' 设定的 elisp 包裹. 如果你想要在 emacs 中使用欧洲键盘设定, 却不打算升级, 你最好从 <url url="ftp://sunsite.auc.dk/pub/emacs/auctex/ftp/auctex/" name="SunSite DK"> 下载 <tt/remap/ 包裹. 除此之外, <tt/iso-acc.elc/ 及 <tt/iso-trans.elc/ 这两个包含 emacs 的包裹也有类似的功能, 只是没有那麽强大. <tag/<tt>groff</tt>:/ <nidx>Danish!applications!groff</nidx> 若你想要 ISO-8859-1 的文字输出, 执行指令 <verb> groff -Tlatin1 <your_groff_input_file> </verb> 请注意: 要让 latin1 的字元在 <tt/man/ (不要移除 <tt/-mandoc/ 的 switch) 成功运作, 必须在 <tt>/etc/man.config</tt> 中执行这项变更. <tag/<tt>ispell</tt> --- 丹麦语拼字检查:/ <nidx>Danish!applications!ispell</nidx> 首先, 确定你安装的是版本 3.1.20 而不是 4.0 的 <tt>ispell</tt>. 後者不但过时, 而且设计很糟糕. 你可以从 <url url="ftp://sunsite.auc.dk/pub/gnu/" name="the GNU archive"> 下载 <tt>ispell</tt>, 并从<url url="http://www.sslug.dk/ispell/idanish/dansk.html" name="SSLUG"> 取得丹麦语字典. 依照档案中的编译指示去做, 就应该不会有问题. (警告: 在为编译作变数定义时, 如果你的 Linux 是 Sys V typs OS, 你必须定义 <tt/USG/ 这个变数以告知 ispell.) 为 <tt/ispell/ 安装好字典後, 你可以执行以下指令来做一个丹麦语档案的拼字检查: <verb> ispell -d danish -T latin1 -w "□□□" <你的丹麦语文字档> </verb> (注, 给非丹麦语读者: 你可以在 <tt/ispell/ 的资源档案 <tt/Where/ 中找到大部份西方语文的字典.) <tag/<tt>joe</tt>:/ <nidx>Danish!applications!joe</nidx> 执行指令 <verb> joe -asis </verb> 或在档案 <tt>˜/.joerc</tt> 中加入: <verb> -asis </verb> 连字号 ( - ) 一定要放在第一行里! <tag/<tt>kermit</tt>:/ <nidx>Danish!applications!kermit</nidx> 我能做到最好的地步是, 在档案 <tt>˜/.kermrc</tt> 中加入: <verb> set terminal bytesize 8 set command bytesize 8 set file bytesize 8 set language danish set file character-set latin1-iso set transfer character-set latin1-iso set terminal character-set latin1-iso </verb> 我觉得应该不只要设定这些变数, 但我不知道还有哪些. 如果你的远端系统是以 DOS 或 OS/2 做根据的, 你必须做以上的设定. <tag/<tt>less</tt>:/ <nidx>Danish!applications!less</nidx> 设定环境变数: <verb> LESSCHARSET=latin1 </verb> 如果你的系统支援区域化资料库 (locale), 就不需要做这项更改, 只需要设定 <tt/LANG/, <tt/LC_CTYPE/ 或 <tt/LC_ALL/ (请参见 <ref id="locale" name="在 libc 5.4.x 以上版本中支援区域化资料库 (locale)">.) <tag/<tt>ls</tt>:/ <nidx>Danish!applications!ls</nidx> 执行指令 <verb> ls -N </verb> 或是 <verb> ls --8bit </verb> <tag/<tt>lynx</tt>:/ <nidx>Danish!applications!lynx</nidx> 在档案 <tt>˜/.lynxrc</tt> 中加入定义: <verb> character_set=ISO Latin 1 </verb> 你也可以在 <tt/lynx/ 的 <tt/Options/ 选单中做出同样结果的设定. 键入 `o' 并设定相关选项. <tag/<tt>man</tt>:/ <nidx>Danish!applications!man</nidx> 请参见本节中的 <tt/groff/ 部分. <tag/<tt>metamail</tt>:/ <nidx>Danish!applications!metamail</nidx> 设定环境变数: <verb> MM_CHARSET=ISO-8859-1 </verb> <tag/<tt>nn</tt>:/ <nidx>Danish!applications!nn</nidx> 在档案 <tt>˜/.nn/init</tt> 中加入: <verb> set data-bits 8 </verb> <tag/<tt>pine</tt>:/ <nidx>Danish!applications!pine</nidx> 在档案 <tt>˜/.pinerc</tt> 中加入定义: <verb> character-set=ISO-8859-1 </verb> 你也可以在 <tt/pine/ 的 <tt/Setup/, <tt/Config/ 选单选项中做出相同结果的设定. 另外, 你也可以放心地在选单中选择 <tt/enable-8bit-esmtp-negotiation/ 和 <tt/enable-8bit-nntp-posting/ (for news). <tag/<tt>rlogin</tt>:/ <nidx>Danish!applications!rlogin</nidx> 执行指令 <verb> rlogin -8 foo.bar.dk </verb> <tag/<tt>sendmail</tt>:/ <nidx>Danish!applications!sendmail</nidx> 在档案 <tt>/etc/sendmail.cf</tt> 中加入 (或去掉注解符号): <verb> O SevenBitInput=False O EightBitMode=pass8 O DefaultCharSet=iso-8859-1 </verb> <tag/<tt>tcsh</tt>:/ <nidx>Danish!applications!tcsh</nidx> 在档案 <tt>/etc/csh.login</tt> 或 <tt>˜/.tcshrc</tt> 中加入: <verb> setenv LANG C </verb> 事实上, 你只需要定义 <tt/LANG/ 或 <tt/LC_CTYPE/ 这两个环境变数的其中一个. 变数的值无关紧要. 请阅读 <tt/tcsh/ man page 以获得更多资讯. <tag/<tt>telnet</tt>:/ <nidx>Danish!applications!telnet</nidx> 在档案 <tt>˜/.telnetrc</tt> 中, 为"每一个"你想要使用 <tt/telnet/ 登入的 host 加入以下句子: <verb> <hostname> set outbinary true </verb> 例如: <verb> localhost set outbinary true foo.bar.dk set outbinary true </verb> <label id="latex"><tag>&tex;/&latex;:</tag> <nidx>Danish!applications!&tex;</nidx> <nidx>Danish!applications!&latex;</nidx> 在使用 &tex;/&latex; 时,会碰到个问题是: 你希望能在 &latex; 中使用特殊字元, 又不希望 &latex; 在每个章节的开头加入像 "Chapter'' 之类的英文字, 也不想要使用英文的文字排版. 在 &latexe; 下, 你汇入的档案的 header 应该会看起来像这样: <verb> \documentclass[a4paper]{article} \usepackage[latin1]{inputenc} \usepackage{t1enc} \usepackage[danish]{babel} </verb> 第一个 <tt/usepackage/ 的句子确保 &latex; 会正确解读欧洲字元, 因此, 你不必特地使用 escape 字元来输入欧洲字元. 第二个 <tt/usepackage/ 的句子并非必要, 但若要使用新的 EC 字型 (以前被称作 DC 字型), 则建议加入. 第三个 <tt/usepackage/ 的句子定义若干丹麦语的文字排版. 所有主要的 Linux 版本都包含 <bf/teTeX/ 包裹. 若要设定 teTex, 你必须执行命令稿 (script) <tt/texconfig/. 在此你可选择丹麦语的连字符号 (dansk: ``orddeling''), 为 <tt/dvips/ 和 <tt/xdvi/ 设定 A4 纸张大小等等. 所有够新的 Linux 版本都包含 &latexe;, 但在比较老旧的系统里, 你使用的可能是 &latex; 2.09. 如果是这样的话, 你可以用 <verb> \documentstyle[a4,isolatin]{article} </verb> 来支援 ISO-8859-1 字元和欧洲纸张大小规格. 但我建议你最好要求系统 administrator 升级到 &latexe;. 你可以从任一 <url url="ftp://sunsite.auc.dk/pub/tex/ctan/" name="CTAN servers"> 网站下载 <tt/isolatin.sty/. 某些人偏好使用特殊模式下的 emacs, 因为可以将"特殊"字母转变成 &tex; escape 码. 这个方法已经不适用了. <tag/<tt>tin</tt>:/ <nidx>Danish!applications!tin</nidx> 在你的档案 <tt>˜/.tin/headers</tt> 中加入: <verb> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit </verb> 如此一来, 你就可以在讯息中使用丹麦字元. </descrip> <sect>其他问题 <nidx>Danish!miscellaneous problems</nidx> <nidx>Danish!problems</nidx> <sect1>时区 <nidx>Danish!problems!time zone</nidx> <p> 丹麦的时区属於中欧时区 (CET 或 MET), (在冬天时) 相等於格林威治标准时刻+1 (GMT+1.) 在 Linux 系统下设定时区的方式是建立一个捷径, 连结 <tt>/usr/lib/zoneinfo/localtime</tt> 和位於 <tt>/usr/lib/zoneinfo/</tt> 目录下符合你的时区或国家的档案名. 若你是丹麦人, 你可以执行以下指令: <verb> ln -sf /usr/lib/zoneinfo/MET /etc/localtime </verb> 或 <verb> ln -sf /usr/lib/zoneinfo/Europe/Copenhagen /etc/localtime </verb> 如此一来, 在夏天的时候, 系统将会自动设定日光节约时间 (GMT+2.) 若需要将系统时间与 CMOS 时钟同步, 你需以 root 身份执行指令 <tt/clock/. 若你的 CMOS 时钟是设定为 GMT (又名 UTC --- the standard on proper Unix systems), 请执行 <verb> clock -u -s </verb> 而若你的 CMOS 时钟是设为本地时间, 则执行 <verb> clock -s </verb> <sect1>A4 纸张大小 <nidx>Danish!problems!paper size</nidx> <nidx>Danish!problems!A4-sized paper</nidx> <p> <itemize> <item><tt/ghostscript/: 加入命令列选项 <tt/-sPAPERSIZE=a4/. <item><tt/ghostview/: 定义以下 Xresource: <verb> Ghostview.pageMedia: A4 </verb> <item><tt>&tex;/&latex;</tt>, <tt/dvips/, <tt/xdvi/: 请参见 <ref id="latex" name="特定应用程式中的国际字元集"> 中 &tex;/&latex; 的部分. </itemize> <sect1>其他作业平台的文字档格式 <nidx>Danish!problems!text file formats</nidx> <nidx>Danish!problems!DOS file formats</nidx> <p> 你可以使用 <tt/recode/ 包裹将 ISO-8859-1 格式的文字档转译为其他格式, 例如使用 codepage 850 的 DOS 文字档. 使用下列指令 <verb> recode cp850:latin1 foo.txt </verb> 就可以将一个名为 <tt>foo.txt</tt> 的档案转为适当的 UNIX 档. 欲取得 <tt/recode/, 你可以从 <url url="ftp://sunsite.auc.dk/pub/gnu/" name="the GNU archive"> 的任一映射站中下载 <tt/recode-3.4.tar.gz/. <sect>在 libc 5.4.x 以上版本中支援区域化资料库 (locale)<label id="locale"> <nidx>Danish!locale support</nidx> <p> <tt/libc 5.4.x/ 版本已经具备 locale 支援. 如果你的系统支援 locale, 你就不需要像 <ref id="apps" name="特定应用程式中的国际字元集"> 那样针对每个程式做设定. 欲在 Debian 中取得此支援, 你必须安装 <tt/wg15-locale/ 包裹. 具备 <tt/GNU libc 2/ (<tt/libc 6.x/) 的系统则预设支援 locale (详见本节内关於 Red Hat Linux 5.0 版本的资讯.) 若你的系统不支援 locale, 你可以使用以下方法取得支援: <enum> <item>确定你使用最新的 <tt/libc 5.4.x/ library. 若没有, 你可以从 <url url="ftp://ftp.yggdrasil.com/private/hjl/" name="Yggdrasil Computing"> 取得. <item>确定你已安装 <tt/localedef/. 这个程式是跟著 library 一起安装的. <item>取得 locale 来源档. 可从 DKUUG 取得. 你必须同时拥有 <url url="ftp://dkuug.dk/i18n/WG15-collection/locales/" name="locale"> 和 <url url="ftp://dkuug.dk/i18n/WG15-collection/charmaps/" name="charmap"> 来源档. <item>将 locale 来源档放入 <tt>/usr/share/i18n/locales/</tt>, 并将 charmap 来源档放入 <tt>/usr/share/i18n/charmaps/</tt>. <item>执行 <tt/localedef/ 以建立 locale 资料档: <verb> localedef -ci da_DK -f ISO_8859-1:1987 da_DK </verb> (注, 给非丹麦语读者: 其他语言的 locale 也可以同样方式建立. 所有 locale 和 charmap 来源档都在 DKUUG 网站上.) </enum> 你可设定下列两个环境变数中的其中一个以取得丹麦语 locale 支援: <verb> LANG=da_DK </verb> 或 <verb> LC_ALL=da_DK </verb> 如果 <tt/da_DK/ 行不同, 请试试 <tt/da_DK.ISO_8859-1/. 这两个环境变数都会设定所有的 locale 目录. 若要设立一个单独的 locale 目录, 请将目录名设为环境变数. locale 目录如下: <verb> Locale category Application --------------- ----------- LC_COLLATE 字串校对 (排序) LC_CTYPE 字元分类及转换 LC_MESSAGES yes 或 no 的讯息翻译 LC_MONETARY 货币符号格式 LC_NUMERIC 非数字符号格式 LC_TIME 日期与时间格式 LC_ALL 以上所有的设定 (将会覆写以上所有的设定) LANG 设定所有目录, 但可被以上任一单独的目录覆写掉 </verb> 在 Red Hat Linux 5.2 下, 你可以在档案 <tt>/etc/sysconfig/i18n</tt> 中设定环境变数 LANG 以及/或 LC_ALL: <verb> LC_ALL=da_DK </verb> 某些程式, 像是 <tt/bash/ 和 <tt/GNU emacs/ 仍需要如<ref id="apps" name="特定应用程式中的国际字元集"> 中所述的特殊设定程序, 但大部份的程式就不需要进一步的修改. 在经过以上步骤後, 原先不接受 8-bit 字元的程式, 诸如 <tt/nvi/, 应该就可以用了. 具备 <tt/GNU libc 2/ 的版本往往支援 locale, 但请注意: 虽然 Red Hat Linux 5.0 具备 <tt/GNU libc 2/, 但它却不支援 locale. 你必须自己执行 <tt/localedef/ 以建立 locale 资料档. 以下指令将会建立丹麦语 locale 资料档: <verb> localedef -c -i da_DK -f ISO-8859-1 da_DK </verb> <tt/glibc-2.0.7-4.i386.rpm/ 的 library 中已包含 locale 资料档, 不需要额外的设定. <sect>在 X11下编写程式的一些小技巧<label id="programming"> <nidx>Danish!X programming</nidx> <p> 显示 8-bit 字元是很容易的. 方法与使用 7-bit ASCII 相同. 然而, 要让应用程式接受特殊字元输入就没有那麽简单了. 若你使用像 Xt toolkit 这样的程式, 或是类似 Motif 的界面工具集, 你只需要在你的程式中加入一行句子. 在你"第一次"使用 Xt时, 使用 <tt/XtSetLanguageProc/ 如下: <verb> int main (int argc, char** argv) { ... XtSetLanguageProc (NULL, NULL, NULL); top = XtAppInitialize ( ... ); ... } </verb> 这样, 你的程式会自动在 <tt>/usr/X11R6/lib/X11/locale/</tt> 目录下依据 <tt/Compose/ table 来对照 <tt/LC_CTYPE/ 变数, 并解读死键等. 这个方法应能通行所有西欧规格键盘. 随著 XFree86 多语系支援功能的进步, 你的程式将慢慢能够在东欧和中欧通用. Xt, Xlib, 和 Motif (包括 v1.2 以上的版本) 都支援这种输入法. 根据我所得到的消息, Xaw 只部份支援此输入法. 若你有进一步的资讯, 请通知我. 本节的内容取自 Michael Gschwind 的 Programming for Internationalization. 你可以从<ref id="docs" name="其他相关文件">连结到那份文件. <sect>在 X11 应用程式中使用丹麦语 <nidx>Danish!X program customization</nidx> <p> 想要在 X11 的应用程式中看见丹麦语的选单, 按钮等, 你只需要将翻译定义这些文字的来源字串. Jacob Nordfalk 已为许多应用程式做了这样的翻译, 包括 <tt/Netscape/ 和 <tt/Ghostview/. 你可以在 <url url="http://alf.nbi.dk/~nordfalk/ovs/" name="这里"> 找到翻译和安装说明. <sect>资讯资源 <nidx>Danish!information resources</nidx> <sect1>其他相关文件<label id="docs"> <nidx>Danish!documents, additional</nidx> <p> 你可以从 <tt/www.linuxdoc.org/ 的任一映射站取得这些 HOWTO. <url url="http://sunsite.auc.dk/ldp/HOWTO/" name="SunSite DK"> 是一个丹麦映射站. Winfried Trümper 写的德语 HOWTO. 其他像是芬兰语, 西班牙语, 和波兰语都已经有了以母语写成的 HOWTO. Andries Brouwer 写的 Linux 键盘和控制台 HOWTO. <url url="http://www.vlsivie.tuwien.ac.at/mike/i18n.html" name="这里">有 ISO 8859-1 National Character Set FAQ, Programming for Internationalization, 以及许多其他 Michael Gschwind 写的文件. <sect1>FTP 及网站<label id="ftp"> <nidx>Danish!FTP sites</nidx> <nidx>Danish!WWW sites</nidx> <p> <url url="http://www.sslug.dk/" name="SSLUG (Skåne Sjælland Linux User Group)"> 是一个瑞典语/丹麦语 Linux user group. 你可以从他们的信件群组中得到许多以丹麦语(或瑞典语)写下的Linux相关问题. 这个 user group 同时负责维护<url url="http://www.sslug.dk/DanishHowto/" name="这份文件">. Ålborg 的 AUC 的主站是 <url url="ftp://sunsite.auc.dk/pub/os/linux/" name="SunSite DK">. 它们发行 Debian 及 Red Hat 版本的 Linux, 最新的 kernel, 以及 <url url="http://sunsite.auc.dk/ldp/" name="Linux Documentation Project">, <url url="ftp://sunsite.auc.dk/pub/os/linux/sunsite/" name="metalab.unc.edu"> 及 <url url="ftp://sunsite.auc.dk/pub/gnu/" name="the GNU archive"> 的映射站. 另外, 你可以从 <url url="ftp://sunsite.auc.dk/pub/tex/ctan/" name="the CTAN archive"> 这个映射站得到一切和 &tex; 与 &latex; 相关的资讯. <sect>版权 <nidx>Danish!credits and legal stuff</nidx> <p> 感谢 Peter Dalgaard, Anders Majland, Jon Haugsand, Jacob Nordfalk, 德语 HOWTO 的作者们, Michael Gschwind 以及许多其他人给予我的建议和帮助. 我衷心感激 Aalborg University Center 的人, 是他们写出并发行许多本文件中所提及的包裹. 特别感谢本文件的原作者, Thomas Petersen. <sect1>版权所有 <p> 本文件的作者并不能够完全保证文件内容中所有提供的资讯都是没有错误的. 你必须斟酌情况使用文件中的提示和□例. Copyright © 1996 by Thomas Petersen. Copyright © 1997-2000 by Niels Kristian Bech Jensen. 这份文件只能在符合<url url="http://www.linuxdoc.org/COPYRIGHT.html" name="http://www.linuxdoc.org/COPYRIGHT.html"> 里的 LDP license 的情况下发行. (原文) Trademarks are owned by their owners. Although the information given in this document is believed to be correct, the author will accept no liability for the content of this document. Use the tips and examples given herein at your own risk. Copyright © 1996 by Thomas Petersen. Copyright © 1997-2000 by Niels Kristian Bech Jensen. This document may be distributed only subject to the terms and conditions set forth in the LDP license at <url url="http://www.linuxdoc.org/COPYRIGHT.html" name="http://www.linuxdoc.org/COPYRIGHT.html">. </article>