在理想世界中,关于 Linux 斯洛文尼亚语本地化的描述应该在此处结束。我们已经介绍了关于输入和输出我们的字符,以及如何通过定义环境变量来告知程序我们正在处理斯洛文尼亚语文本的所有必要信息。本章几乎完全致力于例外情况——由于这样或那样的原因而不使用本地化变量的程序、用于输入或输出字符的替代方法(在特殊情况下(例如,如果我们没有带斯洛文尼亚字符的键盘)仍然可能派上用场),以及类似的内容。
命令行 shell bash
的设置位于 ~/.inputrc 文件中(如果需要,可以创建它)
set meta-flag on
set convert-meta off
set output-meta on
将这三行添加到 /etc/skel
中可能也是明智的,以便所有新创建的用户都可以继承它们。虽然这与斯洛文尼亚语无关,但既然您已经开始工作,您也可以通过将 Home
、Delete
和 End
键恢复到它们的通常含义来使您的生活更轻松:在同一个文件 (~/.inputrc) 中添加以下行
"\e[1~": beginning-of-line
"\e[3~": delete-char
"\e[4~": end-of-line
如果我们在设置文件(/etc/csh.login 用于全局设置,或 ~/.tcshrc 或 ~/.cshrc 用于个人设置)中添加以下行,则可以启用八位字符的输入
setenv LC_CTYPE sl_SI.iso88592
在我们之间:似乎命令行 shell tcsh
完全不在乎您将 LC_CTYPE
变量设置为什么,只要它不是未定义的即可。
注意: 命令行 shell 必须使用启用的 ``8-bit'' 选项进行编译!您可以使用命令 ``set'' 来检查这一点
rufko:~% set
...
version tcsh 6.06.00 (Cornell) 1995-05-13 (i386-intel-linux) options 8b,dl,al
rufko:~%
重要的是那个 ``8b''。如果它没有在您那里显示,您可能别无选择,只能下载源代码并编译它。
在 ~/.Xresources 文件(个人设置)或 /usr/lib/X11/app-defaults/XTerm 文件(全局设置)中,我们指定 XTerm 使用的字体。我们选择一种所有字符宽度相同的字体,例如 ``fixed`` 或 ``Courier``,并按照 ISO Latin 2 布局进行编码。示例
XTerm*font: -*-fixed-medium-r-normal--16-*-iso8859-2
XTerm*boldFont: -*-fixed-bold-r-normal-sans-16-*-iso8859-2
可以使用命令 xlsfonts
列出合适的字体(另请参阅 X Window System 章节的 ``在屏幕上显示我们的字符'' 部分)
xlsfonts -fn '*-fixed-*-iso8859-2'
根据捷克 HOWTO 中的信息,rxvt
目前(开发版本 2.4.6)在不修改源代码的情况下无法使用我们的字符。您可以在 ``Czech HOWTO'' 中找到必要的修改(它不是 LDP 档案的一部分;请参阅 致谢 部分,了解在哪里可以找到它)。
(Jaka Mele,《我用 Linux 做一切!》,Win.Ini,l.6,st.9,str.60)
WordPerfect 已经在其表格中包含了所有需要的字符。我们必须做的就是为我们的字母定义宏命令。假设我们要定义字母 Š(带有抑扬符的大写字母 S)。我们开始录制宏命令(我们称之为 Scaron),跳到字符表,在其中选择字母 Š,结束宏,最后在设置中将宏与选定的键关联起来。
(Jaka Mele,Message-id: <Pine.LNX.4.05.9812241251460.15368-101000@ro.zrsss.si>
---------- Forwarded message ----------
Date: Thu, 24 Dec 1998 11:04:33 +0000
From: "[ALAMUN ALEN" <alen.salamun@uni-mb.si>
To: jaka.mele@lugos.si
Subject: WordPerfect SLO tipkovnica
Hi!
Daj prosim spravi to v mojem imenu na lugos listo, ker je verjetno
trazena roba. Uspelo mi je definirati SLO tipkovnico brez makrojev. Sem na
fax-u pa ne morem poslati jaz na Lugos listo.
LP, Alen
您可以在以下位置找到带有斯洛文尼亚语键盘分配表的 SLO.WGK 文件
ftp://sizif.mf.uni-lj.si/pub/i18n/SLO.WGK
(Andrej Komelj,Message-id: <19981224182341.A3794@perun.mist.si>
)
Odgovor na vprasanje: "Kako je s podporo sumnikom v WP-ju 8.0 pod
Linuxom?" se glasi: SLABO.
1. Resitev v obliki "insert symbol -> multinational" je v teoriji
uporabna, vendar... Hja, multinational znaki so v WP Multinational
fontu, le-ta pa je najbolj podoben Roman-WP fontu. Ima "serife", zato
Helvetica in Zurich odpadeta. Vendar se tudi pri Roman-WP pojavijo
tezave, ce se le-tega uporablja v bold, italic ali bold-italic obliki.
2. Resitev v obliki uporabe Type 1 fontov z definiranimi slovenskimi
znaki (kje se jih dobi? odg: poglejte si v Slovenian-HOWTO, ali jih
skopirajte iz OS/2-ja, ce ga imate) pa zal tudi odpade, ker "brezplacna"
verzija WP-ja nima vsebovanega font installerja (xwpfi) in zato kakrsno
koli dodajanje fontov v wp.drs odpade... Skratka, tako kot je nekdo ze
napisal; brezplacen-in-neoskubljen WP je ena velika potegavscina... Za
Americane je mogoce se nekako uporaben, za povprecnega Slovenca, ki pise
tudi slovenska besedila, pa je popolnoma brez vrednosti. :-(
Nazaja k LyX-u in ze sestavljenim vzorcem. :-)
Mimogrede, kaj se je zgodilo z WP-jem?!? Dokler se ni bil v lasti
Corel-a, je znal postavljati stresice na katere koli znake v katerem
koli fontu. Z WP-jem 6.0 za DOS sem tako pisal tekste v TrueType, Type 1
in CG fontih... POVSOD sem lahko uporabljal sumnike. Huh, "napredek" pa
tak.
--
Kome.
(Jaka Mele,《我用 Linux 做一切!》,Win.Ini,l.6,st.9,str.60)
StarOffice 有点棘手,因为它需要额外的 Type1 字体,但无论如何让我们说出它的配方。因此,首先我们必须从例如斯洛文尼亚 Linux 用户协会的 ftp 服务器 ftp://ftp.lugos.si/pub/lugos/arhiv/Type1-Latin2-Fonts/ 获取斯洛文尼亚语或 latin2 字体(pfb、afm、fonts.dir 和 fonts.scale),文件 l2afm004.zip 和 l2pfb004.zip)。然后我们在 /usr/lib/X11/fonts/Type1.Latin2/ 中打开存档,并将该目录添加到 XWindow 服务器使用的字体目录列表中。我们通过在 /etc/X11/XF86Config 文件中添加以下内容来实现此目的
FontPath "/usr/X11R6/lib/X11/fonts/Type1.Latin2/"
之后我们运行
xset fp+ /usr/X11R6/lib/X11/fonts/Type1.Latin2/
然后是 xset fp rehash
。然后需要在 /usr/local/StarOffice3-1/x3p/fontmetrics/ 目录中为 .afm
文件创建从 /usr/lib/X11/fonts/Type1.Latin2/ 的链接。我们对 /usr/local/StarOffice3-1/x3p/pssoftfonts/ 目录执行类似的操作,只是我们链接了 .pfb 文件。我们几乎完成了,在 /usr/local/StarOffice-3.1/xp3/psstd.fonts 文件中,按照 Latin2 区域的 fonts.dir 文件中已添加字体的示例,添加所有新字体,以便例如 arial.pfb 变为 arial
,而不是 -0-0-0-0
变为 -%d-%d-%d-%d...
。您很快就会看到。最后,让我们使用 xmodmap 程序重新映射键盘,方法是执行 xmodmap xmodmap.si
。如果您有较旧的 Xwindow 系统,您可能需要修复 xmodmap.si 以使 Backspace 和 Delete 键正常工作,否则只需运行 swriter3 并享受额外的斯洛文尼亚语字体即可。
(Boris Pozar,Message-Id: <346044BF.FE97E3AF@guest.arnes.si>
)
我们从 Lugos 服务器下载 ISO 8859-2 编码的 TrueType 字体。然后我们以 root
身份使用 FontManager 将它们添加到字体目录,问题就解决了。
ftp://ftp.lugos.si/pub/lugos/arhiv/Type1-Latin2-Fonts/l2ttf004.zip
Emacs,就像它的作者,有争议的 Richard M. Stallman 一样,是一款人们不会无动于衷的编辑器:要么崇拜它,要么憎恨它。Emacs 不仅仅是一个编辑器;它几乎是一种生活方式。在其中,您可以编写程序、从中运行编译器、编写文本、运行拼写检查器、运行 TeX、阅读邮件和新闻……一旦您真正掌握了 Emacs,您很有可能在下个世纪的大部分时间里都不需要学习任何新的编辑器。但事实证明,人们即使没有它也能过得很好。
编辑器的默认设置限制为七位字符 (ASCII)。我们通过在设置文件中添加以下几行来更改设置
;; Omogocimo izpis znakov s kodo vecjo od 127 (standard-display-european t) ;; Omogocimo vnos znakov s kodo vecjo od 127 (set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 0)
Emacs 的自定义可以在以下设置文件之一中执行
当然,输入和输出我们的字符并不是 Emacs 斯洛文尼亚语本地化故事的结尾。例如,我们也希望 forward-word
和 backward-word
命令不会卡在我们的字符上,并且大小写转换也能正确地为我们的字符运行。对于旧版本的 Emacs,这并不总是完全容易的。Ales Kosir 的《斯洛文尼亚语和计算机》建议集将对读者有很大帮助,其中有一章专门介绍 GNU emacs 程序。您可以在以下位置找到它
http://nl.ijs.si/gnusl/tex/tslovene/slolang/slolang.html
对于最新版本的 Emacs 编辑器和标准的斯洛文尼亚语键盘,自定义特别简单。我们只需要
;;; Turn on Latin-2 both as input and output method (Emacs 20.* ;;; and onwards) (set-language-environment "Latin-2")
Crisp 是一款秉承 Brief 编辑器精神的编辑器,有着动荡的历史。它由英国的 Paul Fox 编写,并作为``试用程序''(共享软件)分发。最新的此类版本是 1991 年的 2.2e,据一些消息来源称,作者不再支持它。更新的版本(目前为 5.1)由美国德克萨斯州的 Vital, Inc. 公司销售。Crisp 在某种程度上更接近 PC 的精神,而不是 Emacs 和 Vi;如果您无法习惯这两者中的任何一个,那么 Crisp 可能是正确的选择。
Crisp 2.2e 编辑器的默认设置是不显示代码为 127 及以上的字符,而是输出它们的十六进制代码,并以字符 \x
开头。如果您加载带有 Crisp 源代码的包,并在 $(SRC)/crisp2.2e/src/crunch/tty/xterm.cr 文件中将 set_term_features()
函数的第二个参数从 NULL
更改为 "%c"
,则会有所帮助。我们编译修改后的宏命令
crunch xterm.cr
结果,修改后的 xterm.cm,与其他宏命令一起放置,通常在 /usr/local/lib/crisp/macros/tty 目录中。宏 xterm
适用于,正如您可能从名称中猜到的那样,在 X Window System 内的 XTerm 窗口中运行的 Crisp。对于 linux.cr(控制台)和 xcrisp.cr(Crisp 的 X11 版本),作者的相同干预没有成功。此外,在较旧版本的 Linux (1.0.8) 上,crunch
抱怨 C 预处理器 /lib/cpp。逻辑链接有所帮助
ln -s /usr/lib/gcc-lib/i486-linux/2.5.8/cpp /lib/cpp
Ales Kosir 为 Crisp 编写了一个宏 slovene
http://nl.ijs.si/gnusl/tex/tslovene/src/slovene.cr
使用它,我们也可以在没有合适按键的键盘上输入我们的字符,方法是:我们输入 "c
而不是 c,宏会将该序列转换为相应的字符。除了 ISO Latin 1 之外,它还支持在我们地区使用的一些其他编码。使用说明也可以通过 WWW 获得
http://nl.ijs.si/gnusl/tex/tslovene/slolang/
Caldera OpenLinux 发行版的一部分也是 Crisp 编辑器的``轻量级''版本 CRiSP LiTE。Caldera 还提供了稍后以更优惠的价格升级到完整版本的可能性。CRiSP LiTE 没有上述八位字符输入的问题。
编辑器 vi
源于 Unix 的远古时代。由于许可问题,在 Linux 系统上,您通常会找到 Bram Moolenaar 的编辑器 vim
(Vi IMproved) 而不是原始的 Vi,有时还会找到 Steva Kirkendall 的 ``elvis'' 或 BSD 4.4 发行版的 nvi
。``vi'' 所基于的思想与您在 MS-DOS 下学到的关于编辑器的所有知识在根本上是正交的。尽管如此,考虑到 ``vi'' 是唯一可靠地存在于每个 Unix 上的编辑器,了解一些使用它的基本命令是明智的。
根据作者的经验,原始的 vi
和 vim
本身都可以毫无问题地传递八位字符。有时,从编辑器调用的外部程序(例如,用于文本对齐的 fmt
)可能会导致问题。通常,如果在 ~/.profile
中定义 LC_CTYPE
变量(请参阅 斯洛文尼亚语区域设置 章节),则会有所帮助。
Pine 首先从 /usr/local/lib/pine.conf(或 /etc/pine.conf)读取全局设置,然后从 ~/.pinerc 读取个人设置。在其中一个或另一个中,我们找到字符串 character-set
并将此变量设置为 ISO-8859-2
... # character-set should reflect the capabilities of the display # you have. Normal default is US-ASCII. Typical alternatives # include ISO-8859-x, where x is a number between 1 and 9. character-set=ISO-8859-2 ...
警告:作者很久没有使用这个程序了,也没有验证所写的内容。丹麦语和德语 HOWTO 声称,要么在命令行 shell 中将 LANG
变量设置为值 iso_8859_1
就足够了,要么在配置文件 ~/.elm/elmrc
中设置以下变量的值
... charset=iso-8859-1 displaycharset=iso-8859-1 textencoding=8bit ...
再次请真正使用此程序的人描述他们的经验。
在 Netscape Mail 4.06 中,可以在消息正文中编写我们的字符,但不能在标题中编写。一旦我们安装了我们的字体并安排了键盘映射(X11 下的字体 和 X11 下的键盘 部分),我们只需在邮件程序的 View 菜单中选择 ``Encoding'',然后在那里选择 ``Central European (ISO-8859-2)''。
我将很高兴收到关于其他版本 Netscape Mail 程序的经验描述。
从 2.5 版本开始,Lynx 也识别 ISO 8859-2 代码页。我们可以通过三种方式之一来设置它。第一种方式是选择 O)ptions
,然后选择 C)harset
,然后按光标键选择所需的字符集。第二种方式是在 ~/.lynxrc 文件(个人设置)中设置
character_set=ISO Latin 2
最后一种方式是在 /usr/lib/lynx.cfg 文件(全局设置)中CHARACTER_SET:ISO Latin 2
(Metod Kozelj,Message-id: <Pine.HPP.3.96.981216083349.17728E-100000@hmljhp.rzs-hm.si>
)
Netscape Navigator 以及 Netscape Communicator 中的浏览器都使用 X Windows System 提供的字符集。因此,为了显示我们的字符,首先要安装 X11 的字体(X11 下的字体 章节)。当 Navigator 启动时,它会自动检测到也有可用的 'Central European (ISO-8859-2)' 字体。如果我们正在查看的页面正确地告知浏览器所使用的字符集,那么 Navigator 会自动使用具有正确代码页的字体。当然,我们可以更改基本字体大小或比例字体的形状。
我们通过在 'Edit / Preferences / Appearance / Fonts' 中指定我们正在更改中欧字体的设置 ('For the Encoding / Central European (iso-8859-2)') 来完成此操作,然后选择 Navigator 应使用哪种字体来显示文本。Navigator 只会向我们提供具有正确字符集的字体。
如果我们正在查看的页面具有正确的字母排列(ISO 8859-2 而不是 Windows-1250 排列),但 Navigator 没有使用具有正确字母排列的字体,我们可以通过选择 ``View / Encoding / Central European (ISO-8859-2)`` 手动切换排列。
在选择具有正确字母排列的字体和键盘上具有正确按键排列的情况下,我们也可以在 'Page Composer' 模块中编写我们的字母。
Netscape Communicator 4.06 及更高版本可以在安装了 ISO 8859-2 字体的 Unix 系统上显示以 Microsoft CP1250 代码页编写的页面,并在标题中标记为 windows-1250
。
注意:以下文本是指令 ``Configuring WWW Server for ISO 8859-2`` http://sizif.mf.uni-lj.si/linux/cee/app/httpd.html 的翻译,它在很大程度上基于 Marko Martinec 的文本 ``解决 HTML 文档中斯洛文尼亚语特殊字符的问题`` http://www.ijs.si/doc/www-csz.html。
Content-Type
行)定义。这是浏览器可用的关于信息类型的唯一信息,因此它必须反映文档的真实内容。
Content-Type: text/html
Content-Type
行中的附加规范 charset
来选择不同的代码页。原则上,允许使用在 IANA 字符集注册表中注册的任何代码页。但是,出于实际原因,建议我们将自己限制为以下 HTTP 实体
charset = "US-ASCII"
| "ISO-8859-1" | "ISO-8859-2" | "ISO-8859-3"
| "ISO-8859-4" | "ISO-8859-5" | "ISO-8859-6"
| "ISO-8859-7" | "ISO-8859-8" | "ISO-8859-9"
| "ISO-2022-JP" | "ISO-2022-JP-2" | "ISO-2022-KR"
| "UNICODE-1-1" | "UNICODE-1-1-UTF-7" | "UNICODE-1-1-UTF-8"
| token
在 IANA 字符集注册表中定义的实体必须表示在 IANA 注册的字符集。空实体表示 ISO 8859-1 字符集(其中包括 US-ASCII,它是其子集)。因此,按照 ISO 8859-2 代码页编码的 HTML 文档必须在 MIME 标头中包含以下行
Content-Type: text/html; charset=ISO-8859-2
在这种情况下,分号和 charset=ISO-8859-2
之间的空格不是强制性的。&#nnn;
的数字实体指定代码为 nnn 的字母,在参考字符集(ISO 8859-1 或 ISO 10646)中,而不是在当前选择的字符集中。因此,我们根本无法使用按照 ISO 8859-2 代码页编码的我们的字符,但我们可以使用 16 位 ISO 10646 代码。因此,字母 č(带有抑扬符的小写字母 C)可以写成 č
。仅此而已。
何时建议使用 ISO 8859-2 代码页,何时不建议使用?在 intranet(内部信息系统)中,在使用 ISO 8859-2 的环境中,可能最好对所有文档使用此代码页。但是,如果信息面向更广泛的受众,则需要知道,在中欧或东欧以外(使用此代码页的地区)的用户可能无法显示信息。有效的 HTTP 传输协议规范不要求 Web 浏览器显示使用 ISO 8859-2 代码页的 HTML 文档。如果浏览器无法以请求的代码页显示页面,它可以忽略此问题并在另一个代码页(通常为 ISO 8859-1)中(错误地)显示页面,或者提供将文档保存到磁盘的选项。因此,建议您的信息系统的入口点不要使用与 ISO 8859-1 不同的代码页。
我们将讨论三种方法,通过这些方法我们可以调整 Web 服务器,以便为用户正确提供以 ISO 8859-2 编码的文档
在请求文档时,大多数 Web 服务器从文件扩展名中了解静态文档的类型,并在此基础上生成 MIME 标头,文档在交付给接收者之前会使用该标头进行标记。多个不同的扩展名可能对应于相同的文档类型(例如,扩展名 .jpeg
和 .jpg
都指定类型 image/jpeg
),但反之则不然 - 一个扩展名最多可以指定一个文档类型。
没有通用的方法允许对以 ISO 8859-1 或 ISO 8859-2 代码页编码的 Web 文档使用 .html
扩展名,并期望 Web 服务器以某种方式决定它将使用哪个 MIME 标头来标记两者。一种可能性当然是将 .html
扩展名永久绑定到按照 ISO 8859-2 代码页编码的 HTML 文档类型。当然,对于无法显示此字符集的受众来说,此解决方案具有明显的缺点。
此处提出的解决方案利用了 Web 服务器的功能,即定义新的文件扩展名并将其绑定到 MIME 标头中的文档类型 text/html; charset=ISO-8859-2
。大多数 Web 服务器都支持此选项。W3C 和 NCSA httpd
服务器(及其所有派生服务器,例如 Apache)在配置文件中使用命令 AddType
将其他文档类型绑定到新的文件扩展名。使用简单而巧妙的方案(请参阅 解决 HTML 文档中斯洛文尼亚语特殊字符的问题),我们可以确保为使用与 ISO 8859-1 不同的代码页的文档类型提供正确的 MIME 标头。例如,如果我们为按照 ISO 8859-2 代码页编码的文档定义扩展名 .html-l2
,我们必须在配置文件中添加以下行
AddType .html-l2 text/html;charset=ISO-8859-2 8bit 1.0
AddType text/html;charset=ISO-8859-2 .html-l2
AddType text/html;charset=ISO-8859-2 html-l2
在每个支持通用网关接口 (CGI) 的 Web 服务器上,我们都可以执行 Web 文档的动态转码。除了优点(我们可以从单个来源以多种不同的代码页提供 Web 文档)之外,此方法也有缺点:一方面,文档转换会消耗服务器的处理器时间,另一方面,动态文档通常不会由中介(英文:proxy)存储在缓存中,因此我们使用它们会额外增加通信线路的负担。
执行动态转码的脚本示例
以下是三种使用特殊功能和非标准软件扩展的解决方案。前两个与 Web 服务器相关,最后一个与流行的 Web 浏览器 Netscape Navigator 相关。G. Nicol 使用 ``MIME Header Supplemented File Type'' 提案解决了相同的问题。
W3C Web 服务器(以前称为 CERN WWW)允许在传出文档的 MIME 标头中添加元信息。
按照默认设置,服务器在文档目录的 .web
子目录中查找带有 .meta
扩展名的文件中的元信息。例如,如果我们将 Web 文档存储在 /WWW/Hypertext
目录中,并且希望使用正确的 MIME 标头标记其中的文档 isolatin2.html
,我们这样做
.web
子目录尚不存在,则首先创建它
$ mkdir /WWW/Hypertext/.web
Content-Type: text/html; charset=ISO-8859-2
Apache 服务器定义了一种特殊的文件类型,称为 ASIS。服务器将 ASIS 文件发送给客户端,完全按照原样(英文:``as is''),而不使用 HTTP 协议通常要求的标头对其进行标记。因此,文件本身必须包含 HTTP 协议要求的所有必要字段,然后是一个空行和 HTML 文档的内容。
在服务器的配置文件中,我们指定扩展名 .asis
属于文档类型 httpd/send-as-is
AddType httpd/send-as-is asis
ASIS 文件示例
Status: 200 OK
Content-Type: text/html; charset=ISO-8859-2
<HTML>
<HEAD>
<TITLE>Hello world</TITLE>
</HEAD>
<BODY>
<H1>Zivjo svet!</H1>
</BODY>
</HTML>
如您所见,您还必须在文件中包含三位数的服务器响应代码。服务器总是添加 Date:
和 Server:
字段,因此我们不应将它们包含在文件中。
在 HTTP 2.0 规范中,建议使用带有 HTTP-EQUIV
标记的 <META>
标签作为一种可选方法,服务器可以通过该方法从 Web 文档的标头 (<HEAD>
) 中提取额外的元信息,并将其用于创建 MIME 标头。作者不知道有任何服务器实际上这样做。这种 Web 文档的解析可能会给处理器带来过大的负载,并且会对 Web 服务器的响应能力产生强烈影响。但是,Web 浏览器(例如,Netscape Navigator,从 2.0 版本开始就这样做)已开始使用此信息。
带有关于文档标头中使用的代码页的元信息的文档示例
<HTML>
<HEAD>
<TITLE>Naslov<TITLE>
<META HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=ISO-8859-2">
</HEAD>
<BODY>
Besedilo...
</BODY>
</HTML>
通过命令 telnet
或 rlogin
,我们可以通过 TCP/IP 网络在另一台计算机上工作。
此时八位字符的问题很少是由于上述程序设置不正确造成的,因为两者的默认设置都支持八位字符。如果出现问题,除了这些程序,还值得查看
stty -parenb -istrip cs8
telnet
或 rlogin
的设置
我们使用命令 toggle binary
显式地准备 Telnet 以建立八位连接
~> telnet
telnet> toggle binary
Negotiating binary mode with remote host.
telnet> open 计算机
Telnet 还允许我们将所选计算机的设置输入到配置文件 ~/.telnetrc 中。条目的形式为
...
biofiz.mf.uni-lj.si
set binary true
...
程序 ``rlogin'' 的默认连接模式是八位的,但我们可以使用 ``-8'' 规范显式地指定它
rlogin 计算机 -8
LaTeX 软件包的斯洛文尼亚语本地化包括
LaTeX 中对非英语语言的支持已由荷兰 Johannes Braams 的 babel
软件包统一,该软件包是 Linux 上 TeX 软件包的所有现代发行版(如 teTeX 和 NTeX)的标准部分
ftp://sunsite.informatik.rwth-aachen.de/pub/comp/tex/teTeX/
http://web.mathematik.uni-stuttgart.de/ntex/WWW/
通过在 babel
软件包中使用 ``slovene'' 选项,会自动选择副标题和标题等的斯洛文尼亚语名称、斯洛文尼亚语单词断字规则(如果我们安装了斯洛文尼亚语断字模式;斯洛文尼亚语单词断字规则 章节)以及 7 位字符输入方法 "c"s"z
\usepackage[slovene]{babel}
在 LaTeX 的新版本 (LaTeX2e) 中,我们也可以使用软件包 fontenc
和 inputenc
选择 8 位代码表 T1
(也称为 DC 或 Cork)和 8 位字符输入。LaTeX 中完整文档的示例
\documentclass[a4paper]{article} \usepackage[slovene]{babel} \usepackage[T1]{fontenc} \usepackage[latin2]{inputenc} \begin{document} Ceprav se pouk na zeleznicarski soli v Sentvidu obicajno konca sele ob stirih, odpesacijo ucenci iz obcin Zelimlje in Zetale domov ze cetrt cez tri. \end{document}
在旧版本的 LaTeX 软件包 LaTeX 2.09 中,我们无法使用 inputenc
机制。我们使用 Andrej Brodnik 的样式 latin2.sty
来帮助我们。用法示例
\documentstyle[latin2]{article} \begin{document} ... \end{document}
latin2
在所有 CTAN 服务器上都可用,例如
ftp://ftp.dante.de/tex-archive/macros/latex209/contrib/latin2/
Matjaz Vrecko 在 1990 年在他的论文中制作了包含斯洛文尼亚语单词断字规则的文件,并将其所有权转让给了斯洛文尼亚 TeX 系统用户协会 (TeXCeH)。它可供个人使用,无意获取经济利益。自 1995 年以来,IJS 的 Leon Zlajpah 博士一直在照顾它,他也将其转发给了 babel
系统(用于 TeX 系统中的外语支持)的维护者 Johannes Braams。babel
系统通常与 TeX 系统的发行版一起获得。当前最新版本是 2.3,日期为 1997-04-15。
在 teTeX 发行版中,它是 Unix 上最流行的发行版,我们通过以管理员身份运行程序 texconfig
来启用对斯洛文尼亚语断字模式的支持。在菜单中,我们选择选项 HYPHEN - hyphenation table (tex/latex)。在选择此选项时,程序 texconfig
运行编辑器 vi
并将文件 language.dat 加载到其中。对于那些不熟悉它的人,关于如何使用它的最重要信息:您可以使用键 h
、l
(小写 L)、j
和 k
在文本中左右、上下移动。您可以通过将光标移动到字符上并按下键 x
来删除字符。通过按下键 Esc
并输入 :wq
(冒号、小写 W、小写 Q),然后按 Enter
键来保存文件并结束工作。掌握了这些知识后,我们在 language.dat 文件中删除记录 slovene sihyph22.tex
前面的注释(百分号),保存并退出编辑器。程序 texconfig
将自动创建带有嵌入式断字模式的新格式文件。
本文作者在 sihyph22.tex 文件中遇到了无法解释的问题,当 Zlajpah 博士向他发送了新版本的斯洛文尼亚语断字模式时,这些问题也同样奇迹般地消失了。我们可以从 ftp://sizif.mf.uni-lj.si/pub/i18n/tex/sihyph23.tex 获取它,并将其与旧文件并排放置,通常在 /usr/TeX/texmf/tex/generic/hyphen/ 目录中。运行 texconfig
,首先在那里刷新文件列表(选择 REHASH - rebuild ls-R database),然后重复上一段中的过程,方法是将名称 sihyph22.tex
更正为 sihyph23.tex
。
您可以在以下位置找到有关斯洛文尼亚 TeX 用户组的其他信息
http://vlado.fmf.uni-lj.si/texceh/texceh.htm
(Roman Maurer,<roman.maurer@fmf.uni-lj.si>)
如果我们使用带有标准斯洛文尼亚语键盘(102/105 个键)的 LyX,我们可以轻松地对其进行自定义以使用斯洛文尼亚语
Options / Screen Fonts / Font Norm = iso8859-2
遗憾的是,LyX 似乎没有在任何地方保存此数据。因此,我们必须手动将以下行添加到 lyxrc 文件中(系统文件通常位于 /usr/share/lyx/ 目录中,用户文件位于 ~/.lyx/ 中)
\font_norm iso8859-2
Layout / Document / Language = slovene
Layout / Document / Encoding = latin2
Layout / Paper / Papersize = A4
Layout / Quotes = ,,text`` & Double
Layout / Save layout as default
"Should I set some parameters to letter the defaults
of this document class?"
由于 LyX 中直到 1.0.0pre2 版本(包括 1.0.0pre2 版本)的错误,无法在数学文本模式(math text mode)中输入 8 位字符。我们通过将整个公式设置为 TeX 代码来帮助自己("tex-mode"
- 通过这样做,我们失去了 WYSIWYG)。LyX 的开发人员已获悉此错误,并且很可能会在后续版本中修复它。
使用 7 位输入特殊字符(如 "c"s"z
)很困难,因为 LyX 会自动将双引号转换为两个单引号。第一个想法是我们可以再次使用 "tex-mode"
选项,但更方便的选择是重新定义双引号。在 emacs.bind 文件(或我们正在使用的 cua.bind 文件)中添加一行
\bind "S-quotedbl" "accent-caron"
现在,我们将通过按 "c"s"z
来获得我们的特殊字符。这样做不幸的是会失去双引号自动转换为两个单引号的功能,但我们不可能拥有一切...
emacs.bind 文件位于 ~/.lyx/bind/ 目录中。如果它还不存在,我们可以从 /usr/share/lyx/bind/ 目录复制系统文件并进行修改。
如果我们有旧的斯洛文尼亚键盘(美式键盘,用 csz 代替 ~{`),我们可以使用 Alen Salamun <alen.salamun@medinet.si>
提供的 Latin 2 键盘重映射
Options / Keyboard / Primary = slovene
相应的 slovene.kmap 文件通常位于 /usr/share/lyx/kbd/ 目录中。
以下是如何使用拼写检查器 ispell 来检查斯洛文尼亚语文本的拼写
Edit / Spellchecker / Spellchecker Options
* Use alternate language: slovensko
* Extra special chars allowed in words: cszCSZ
在斯洛文尼亚语版本的 LyX 编辑器中
Uredi / Crkovalnik / Izbire crkovalnika
* Uporabi drug jezik: slovensko
* Dodatni posebni znaki, dovoljeni v besedah: cszCSZ
在欧洲,标准纸张格式是 A4,我们也需要告知屏幕文本查看程序
在 ~/.Xresources 文件(个人设置)中添加一行
XDvi.paper: a4
在 ~/.Xresources 文件(个人设置)或 /usr/lib/X11/app-defaults/Ghostview 文件(全局设置)中添加以下行
! Ghostview naj uporablja format A4 *pageMedia: A4 ! Tudi Ghostscript naj uporablja format A4 *Ghostview.interpreter: gs *Ghostview.arguments: -sPAPERSIZE=a4
/usr/share/ghostscript/版本/gs_init.ps
或 /usr/local/share/ghostscript/版本/gs_init.ps
)中全局选择 A4 页面大小是明智的。找到以下行并取消注释(删除开头的百分号)
% (a4) /PAPERSIZE where { pop pop } { /PAPERSIZE exch def } ifelse
在 TeX 系统中制作索引最常用的工具是 Makeindex。它的本地化程度有限(除了英语外,它还了解德语排序规则),并且不识别我们的字母表。
在 LaTeX 中,我们使用序言中的 \makeindex
命令创建索引;我们想要输入到索引中的每个单词都必须使用 \index{vnos}
命令单独标记。因为我们通常也希望打印索引,所以我们添加了 \printindex
命令,该命令在 makeidx
宏包中定义。例如,文件 zelez-sola.tex 将说明所说的内容
\documentclass[a4paper]{article} \usepackage[slovene]{babel} \usepackage[T1]{fontenc} \usepackage[latin2]{inputenc} \usepackage{makeidx} \makeindex \begin{document} Ceprav se pouk na zeleznicarski soli\index{s~ola@sola!z~eleznic~arska@zeleznicarska} v Sentvidu\index{S~entvid@Sentvid} obicajno konca sele ob stirih, odpesacijo ucenci iz obcin Zelimlje\index{Z~elimlje@Zelimlje} in Zetale\index{Z~etale@Zetale} domov ze cetrt cez tri. \printindex \end{document}
诀窍在于 makeindex
允许语法 \index{vnos1@vnos2}
,其中 vnos1
是索引排序的依据,而 vnos2
是实际打印的文本。我们的字母 Č 因此写成 Č~
(字符 ~
在 ASCII 代码表中位于所有字母之后),这样可以确保它被可靠地放置在所有 C 之后。我们分三个步骤处理文本
latex zelez-sola
makeindex zelez-sola
latex zelez-sola
第一个 latex
命令从 zelez-sola.tex 文件生成 zelez-sola.idx 文件,makeindex
命令对其进行排序并从中生成 zelez-sola.ind 文件,然后,第二个 latex
命令会吸收它。
Groff 对我们的字符的支持相当有限。在屏幕输出(nroff
模式)中,我们可以通过写入带有 8 位 ISO Latin 2 字符的文件来欺骗,并欺骗程序(选择 -Tlatin1
)使其认为字符按照 ISO Latin 1 排列编码。
Henryk Paluch 编写了一个 groff-latin2
包,我们可以使用宏命令输入我们的字符,例如
\('a a z ostrivcem
\(vc c s stresico
\vou u s krozcem
在编写本文时,PostScript 格式的输出仍然无法工作,尽管 Juliusz Chroboczek 的 ``ogonkify'' 包中的机制可能与 ``a2ps'' 程序类似,也可能在此处使用。最大的问题可能是 ``groff'' 包已被遗弃,因为最初的作者 James Clark 不再维护它。groff-latin2
包现在由 Jan Kasprzak <kas@fi.muni.cz> 维护,您可以在以下位置找到它
ftp://ftp.fi.muni.cz/pub/localization/groff/
从 5.004 版本开始,Perl 也支持本地化。我们必须设置适当的环境变量,并在程序中使用调用
use locale;
-Mlocale
选项调用 Perl。以下是一些示例;测试示例来自 Jan Pazdziora~> LC_CTYPE=sl_SI.iso88592 perl -Mlocale -e '$_="tezisce\n"; s/\w/$&:/g; print;' t:e:z:i:s:c:e: ~> LC_CTYPE=C perl -Mlocale -e '$_="tezisce\n"; s/\w/$&:/g; print;' t:e:zi:sce: ~> LC_CTYPE=sl_SI.iso88592 perl -e '$_="tezisce\n"; s/\w/$&:/g; print;' t:e:zi:sce:
正如我们所见,只有在第一个示例中,当我们执行了以下两项操作时:设置了 LC_CTYPE
变量并使用 -Mlocale
选项调用 Perl,我们的字符才真正被视为字母 (\
)。
大多数现代 Linux 发行版都预装了 Ispell 拼写检查器;但它缺少斯洛文尼亚语词汇。您可以在以下文件中找到它
ftp://sizif.mf.uni-lj.si/pub/i18n/ispell/slovensko.tar.gz
存档文件包含两个文件:slovensko.hash 和 slovensko.aff。将它们放在 Ispell 已经存储其他语言词典的位置。对于本文作者来说,它是 /usr/lib/ispell/;如果您的不是,您可以尝试使用 find 搜索 english.aff 文件来找到它。基本的斯洛文尼亚语词典来源于 Amebis d.o.o. 公司为国际 MULTEXT-East 项目贡献的数据库;在 Jozef Stefan 研究所智能系统部门的 Tomaž Erjavec 博士的协调下,它可以用于非营利性用途。我们通过在命令行中为 Ispell 提供文本编写的语言来使用它,例如 english、deutsch、francais 或 slovensko
ispell -d slovensko besedilo.txt
您将在手册中找到有关如何使用 Ispell 程序的更详细说明,您可以在 斯洛文尼亚语和计算机 Ales Kosir 的页面上阅读有关如何调整 ispell
包以适应斯洛文尼亚语的更多信息。带有斯洛文尼亚语词汇的 Ispell 也为同一作者的网络拼写检查器 Trubar 提供支持
http://nl.ijs.si/cgi-bin/truform.pl
除了 ISO Latin 2 之外,还有一些其他字符集包含我们的所有字符:Microsoft Codepage 1250、IBM Codepage 852、JUS I.B1.002、Apple MacOS-CE、Apple MacOS-Croatian、Kamenicky、ISO Latin 4、ISO Latin 6、ISO Latin 7 等。
虽然编写一个程序来在不同编码之间进行转换并不困难,但使用现有的程序会更方便。GNU recode 就是其中之一,例如,可以在 ARNES 服务器上找到
ftp://ftp.arnes.si/software/gnu/recode/recode-3.4.tar.gz
较旧版本的 GNU recode(3.5 之前)不识别 Microsoft 代码页 1250-1259。用法很简单
recode yu:latin2 文件
将文件从 JUS I.B1.002 编码转换为 ISO Latin 2 编码。与往常一样,--help
选项也提供了更多选项。较新版本的 recode 程序(也识别更多编码),使用略有不同的语法
recode yu..latin2 文件
根据作者的经验,转录(例如,“nabori” latex
或 flat
)仍然仅限于进出 ISO 8859-1 编码的转换。您可以在以下位置找到 recode 程序的较新(测试)版本
ftp://ftp.iro.umontreal.ca/pub/recode/
Less(作者 Mark Nudelman)是一个用于在屏幕上查看文本的程序,是标准 more
的流行替代品。
我们通过在 ~/.profile 中进行设置来调整 Less 以输出 8 位字符
LESSCHARSET=latin1; export LESSCHARSET
latin1
而不是 latin2
不是错误。Less 目前尚不识别后者,因为它实际上只关心哪些字符是普通字符,哪些是控制字符(需要特殊处理),并且由于字符排列在整个 ISO 8859 系列中是相同的,因此我们可以选择 latin1。或者,我们也可以显式指定字符集中字符类型的顺序
LESSCHARDEF="8bcccbcc18b95.33b."; export LESSCHARDEF
ISO 8859 系列中的所有字符集都有八个二进制字符(特殊字符,通常不在文本中),三个控制字符,一个二进制字符,两个控制字符,十八个二进制字符,95 个普通字符,33 个二进制字符,以及直到表格末尾的普通字符。
所有 Unix 系统都有内置日历 cal
,但这非常以英语为中心。德国的 Thomas Esken 编写了一个替代日历 gcal
。从 2.40 版本开始,它也识别斯洛文尼亚的节假日。我们可以在常见的 GNU 发行位置找到它。最近的可能是
ftp://ftp.arnes.si/software/gnu/
以下 GCAL
变量值适合我们的情况
GCAL="--cc-holidays=SI --gregorian-reform=1582"; export GCAL