我对 LaTex 还比较陌生。我正在努力编写一份包含希腊语和英语混合单词的报告。报告的主要语言是希腊语。因此,我使用了 babel 包。然而,latex 总是错误地将单词“είναι”连字符为“ε-ί-ναι”,而不是“εί-ναι”。因此,我尝试使用\hyphenation
以下命令:
\documentclass[a4paper,12pt,twoside,openright]{report}
\usepackage{titlesec}
\usepackage[a4paper,inner=3.5cm,outer=2.5cm]{geometry}
\usepackage[english,greek]{babel}
\usepackage[utf8x]{inputenx}
\usepackage{graphicx}
\usepackage[tight]{subfigure}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{cite}
\begin{document}
\selectlanguage{greek}
\hyphenation{εί-ναι}
\end{document}
但是\hyphenation
上面使用的命令会产生错误:Improper \hyphenation will be flushed \hyphenation{ε
。
这个问题有解决办法吗?请注意,我尝试了该\babelhyphenation[greek]{εί-ναι}
命令,但 LaTeX 无法识别它。
我为 Win7 安装了 MikTex 2.9(32 位)。
任何帮助都感激不尽。
答案1
这是 的一个难题pdflatex
。您不能在 中使用希腊字母\hyphenation
,因为它们实际上被视为命令,最终指示 TeX 排版相应的字母。
此类问题应报告给连字模式的维护者,可通过邮件列表联系http://tug.org/mailman/listinfo/tex-hyphen
为了解决手头的问题,我们必须查看使用希腊字体时字符占用的字符位置。结果如下:
- ε =
0x65
- 一 =
0xD0
- ν =
0x6E
- α =
0x61
- ι =
0x69
完整表格如下:
因此我们必须使用 TeX 的内部机制来表示任意字符,即^^xy
,其中x
和y
为十六进制数字(字母为小写abcdef
)。
但是,还有另一个问题:utf8
或utf8x
选项inputenx
使其中一些字符处于活动状态(这就是屏幕上的希腊字母如何转换为要排版的字形)。
好了,这是最终的成果;该\detokenize
命令避免了以特殊方式解释字符。最后,我将单词排版为零宽度\parbox
,因此 TeX 将显示所有可行的连字符点。
\documentclass[a4paper,12pt,twoside,openright]{report}
\usepackage{titlesec}
\usepackage[a4paper,inner=3.5cm,outer=2.5cm]{geometry}
%%% This is better than `utf8x`
\usepackage[LGRx,T1]{fontenc}
\usepackage[utf8]{inputenx}
%%% Comment the two lines above and uncomment the line below for using `utf8x`
%\usepackage[utf8x]{inputenx}
\usepackage[english,greek]{babel}
%%% Use Greek hyphenation rules
\begin{hyphenrules}{greek}
\hyphenation{\detokenize{^^65^^d0-^^6e^^61^^69}}
\end{hyphenrules}
\usepackage{graphicx}
\usepackage[tight]{subfigure}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{cite}
\begin{document}
\parbox{0pt}{\hspace{0pt}είναι}
\end{document}