我正在使用 TeX Live 和包greektex
。为了greektex
工作,我必须使用iso-8859-7
编码。我想知道是否有办法通过这些设置制作希腊语的 PDF 书签(如果可能的话也可以使用hyperref
)。
\documentclass[10pt]{book}
\usepackage{greektex}
\usepackage[bookmarks=true]{hyperref}
\begin{document}
\chapter{κεφαλαιο}
\end{document}
如果运行上述代码,生成的 pdf 书签不是希腊语的
答案1
我认为所需的工作量greektex
根本不值得使用它。请问您到底用它做什么?
如果我理解正确的话,它是一个破坏 LaTeX 目前在 inputenc/fontenc 领域所做的一切的包。
的目标greektex
是支持一组字体,据ywclr
我所知,这些字体仅作为元字体源提供。因此,将其提升到本世纪的任务之一可能是应用mftrace
或类似的东西 ;-)
该软件包支持“输入编码”iso-8859-7,但直接将输入字符映射到字体的编码。LG1
该软件包中定义了一种字体编码,但它实际上并没有做任何有趣的事情,特别是它没有定义希腊字符,所以你不能用它来安装任何其他适合这种编码的字体。
现在,您需要什么来获取书签?
首先,
\usepackage[unicode]{hyperref}
PD1
实际上是唯一的选择,因为否则使用的编码hyperref
不支持希腊语。请注意,这些是字体编码,这并不意味着输入必须是unicode!
该选项PU
使用的编码确实支持希腊语,如下所示:hyperref
unicode
\DeclareTextCommand{\textalpha}{PU}{\83\261}% U+03B1
\DeclareTextCommand{\textbeta}{PU}{\83\262}% U+03B2
\DeclareTextCommand{\textgamma}{PU}{\83\263}% U+03B3
这意味着,为了使用 hyperref,您的希腊字符必须\textalpha
\textbeta
\textgamma
在输入级别进行编码!
基本上,您需要一个输入编码将 iso-8859-7 输入映射到这些定义,如下所示:
\DeclareInputText{"E1}{\textalpha}
\DeclareInputText{"E2}{\textbeta}
\DeclareInputText{"E3}{\textgamma}
目前尚不存在这样的输入编码,考虑到现在大家都在转向unicode,可能永远不会再有这种情况了。
要恢复您的字体,您需要一个字体编码将这些字符映射回字体中的正确位置。
这可能会破坏包装中的很多东西greektex
......
为了证明这样的事情可以起作用,我做了以下示例:
\documentclass{article}
\usepackage[latin1]{inputenc}
\DeclareInputText{`α}{\ifmmode\alpha\else\textalpha\fi}
\DeclareInputText{`β}{\ifmmode\beta\else\textbeta\fi}
\DeclareInputText{`γ}{\ifmmode\gamma\else\textgamma\fi}
\pdfmapfile{+frutigernext.map}
\renewcommand\rmdefault{frutigernext}
\usepackage[QS7]{fontenc}
\usepackage[unicode]{hyperref}
\begin{document}
\section{abc αβγ}
\[α=β^2\]
\end{document}
笔记这不是一个有效的例子因为我的系统上安装了必要的编码和字体。QS7
但是这是我自己制作的字体编码,可能非常接近您需要的,因为它也是基于 iso-8859-7。我还没有为 iso-8859-7 制作输入编码,因为我实际上使用的是 Unicode(在基于 XML 的系统中),因此对于示例,我使用了一点 hacking :-)
结论
最后,我强烈建议您切换到unicode并使用不同的字体,如希腊语 pdf 书签。
如果你的系统xetex
支持luatex
16 位以上编码,那就没问题了 :-)
在希腊语 pdf 书签但是,您会看到很多基于 unicode 输入和LGR
字体编码的示例,如果您想混合拉丁字符和希腊字符,这将带来问题。所以我可以推荐我的QS7
字体编码 ;-)
这是希腊文和拉丁文混合使用的真实示例。文本来自 unicode 编码的数据库,这里没有真正的机会切换语言。