我正在写一本书,需要包含 Unicode 字符的范围4DC0-4DFF展示中国《易经》的卦象 http://en.wikipedia.org/wiki/I_Ching
我使用过各种软件包,也阅读过社区中有关如何使用 Unicode 的所有问题。我是一个初学者在 LaTeX 中。
我的环境:MikTeX,带有 TeXnicCenter 和选项 XeLaTeX,Windows 8。我将文档保存为 UTF-8。
只是一条评论(它已经解决了: : 我可以使用 CJK 包显示所有中文字符吗?
这里有一个例子。但是如何在 LaTeX 中显示每个卦象呢?
http://en.wikipedia.org/wiki/I_Ching_hexagram_01
请提供适用于我所述环境的完整示例。请不要写类似以下内容的内容“做这个”或者“用它。”
希望理解和帮助。
下面是我正在使用的包的一个示例
\documentclass[a4paper,12pt,twoside,openright]{book}
\usepackage[T1]{fontenc}
\usepackage[brazil,portuguese]{babel}
\usepackage{lmodern} % Type1-font for non-english texts and characters
\usepackage{graphicx} % For loading graphic files
\usepackage{amssymb, amsmath, pxfonts} % permite simbolos matemáticos
\usepackage{ae}
\usepackage{aecompl}
\usepackage{fontspec}
%----------------------------------------------
% Unicode environment
%----------------------------------------------
\usepackage{autofe}
\usepackage{ucs}
\usepackage{newunicodechar}
\usepackage[utf8x]{inputenc}
\usepackage[unicode=true]{hyperref}
\hypersetup{unicode=true}
\usepackage{cmap}
\usepackage{CJKutf8}
\DeclareUnicodeCharacter{4DC0}{\hex1}
\newunicodechar{4DC2}{\hex2}
\catcode"4DC0=\qian
%----------------------------------------------
\begin{document}
$hex1$ $hex2$
\qian
\unichar{4DC0}
\char"4DC0
Hexagram \hex1
\end{document}
答案1
一般而言,ucs
和包inputenc
不能与 XeLaTeX 以及一起使用,但最后一个可能有其用途;永远不要加载和:它们已经过时了。fontenc
ae
aecompl
CJKutf8
CJK
包是包和带选项inputenc
的包的混合utf8
。它也不用于 XeLaTeX。
您不需要任何 CJK 包即可打印某些字形:只需找到具有这些字形的字体即可。在我的系统上,我发现了 DejaVu Sans。因此,我定义了一个宏,该宏将字形的编号作为参数(从 0 到 63,如果您愿意,可以从 1 开始)。
出于某种原因,显然是由于如何xeCJK
决定什么是中文,什么不是中文,人们必须声明字体两次:对于六卦,必须用 来声明\newCJKfontfamily
,对于三卦,必须用 来声明\newfontfamily
(或者\newfontface
对于不需要根据上下文改变形状的字体来说,这样做更有效率)。
\documentclass{article}
\usepackage{fontspec}
\usepackage{xeCJK}
\setmainfont{Times New Roman}
\setCJKmainfont{LiSong Pro} % or another font supporting Chinese
\newCJKfontfamily{\dejavusanszh}{DejaVu Sans} % this font has the required glyphs
\newfontface{\dejavusans}{DejaVu Sans} % this font has the required glyphs
\newcommand{\iching}[1]{{\dejavusanszh\char\numexpr"4DC0+#1}}
\newcommand{\trigram}[1]{{\dejavusans\char\numexpr"2630+#1}}
\begin{document}
Yì Jīng 易經 - Hex: \iching{8} \trigram{7}
\trigram{0} \trigram{1} \trigram{2} \trigram{3}
\trigram{4} \trigram{5} \trigram{6} \trigram{7}
\iching{0}
\iching{1}
\iching{2}
\iching{3}
\iching{4}
\iching{5}
\iching{6}
\iching{7}
\iching{8}
\iching{9}
\iching{10}
\iching{11}
\iching{12}
\iching{13}
\iching{14}
\iching{15}
\iching{16}
\iching{17}
\iching{18}
\iching{19}
\iching{20}
\iching{21}
\iching{22}
\iching{23}
\iching{24}
\iching{25}
\iching{26}
\iching{27}
\iching{28}
\iching{29}
\iching{20}
\iching{31}
\iching{32}
\iching{33}
\iching{34}
\iching{35}
\iching{36}
\iching{37}
\iching{38}
\iching{39}
\iching{40}
\iching{41}
\iching{42}
\iching{43}
\iching{44}
\iching{45}
\iching{46}
\iching{47}
\iching{48}
\iching{49}
\iching{50}
\iching{51}
\iching{52}
\iching{53}
\iching{54}
\iching{55}
\iching{56}
\iching{57}
\iching{58}
\iching{59}
\iching{60}
\iching{61}
\iching{62}
\iching{63}
\end{document}
另一种方法是将易经卦象符号声明为非 CJK 字符xeCJK
:
\documentclass{article}
\usepackage{xeCJK}
\xeCJKsetcharclass{"4DC0}{"4DFF}{0} % set Yijing Hexagrams Symbols as non-CJK characters
\setmainfont{Times New Roman}
\setCJKmainfont{LiSong Pro} % or another font supporting Chinese
\newfontface{\dejavusans}{DejaVu Sans} % this font has the required glyphs
\newcommand{\iching}[1]{{\dejavusans\char\numexpr"4DC0+#1}}
\newcommand{\trigram}[1]{{\dejavusans\char\numexpr"2630+#1}}
\begin{document}
Yì Jīng 易經 - Hex: \iching{8} \trigram{7}
......
\end{document}
答案2
您正在加载许多无法工作或与 xelatex 冲突的包。要获取字形,您可以使用类似这样的代码,但您必须先找到合适的字体。
\documentclass{book}
\usepackage[brazil]{babel}
\usepackage{fontspec}
\begin{document}
{\fontspec{UnicodeBMPFallback.ttf} % replace by a real font with the glyphs
^^^^4dc0
\char"4DC0}
\end{document}