![特殊字符不再出现在文本中](https://linux22.com/image/256433/%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6%E4%B8%8D%E5%86%8D%E5%87%BA%E7%8E%B0%E5%9C%A8%E6%96%87%E6%9C%AC%E4%B8%AD.png)
我有一个 unicode 文本 (XeLaTeX),其中我使用带变音符号的元音,如 ü 和 ö,它本来可以正常工作,但突然停止工作。它们会显示错误消息:
!包 inputenc 错误:在输入编码“utf8”中,使用的键盘字符未定义(inputenc)。
删除 inputenc 和 babel 并从文件更改\setromanfont
为,ü 和 ö 再次出现。\setmainfont
.sty
但是创建 ḥ 的命令\d{h}
不再像以前那样起作用,文本只会产生 h。字体没有自己所需的字形。我使用的是 XeLaTeX;下面的大部分信息(以及更多信息)都在一个.sty
文件中。
\documentclass[12pt,twoside,a4paper,openright]{book}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{overpic}
\usepackage{lettrine}
\usepackage{makeidx}
\usepackage{fontspec}
\usepackage[normalem]{ulem}
\usepackage[paperwidth=6.3in,paperheight=9.45in]{geometry}
\setromanfont[BoldFont={SeriaPro-Bold},ItalicFont={SeriaPro-Italic},BoldItalicFont={SeriaPro-BoldItalic}]{SeriaPro}
\begin{document}
下面重新定义 \d 的建议有效:
\renewcommand*\d[1]{\makebox[\widthof{#1}][c]{\raisebox{-.45ex-\depthof{#1}}{.}}\llap{#1}}
更好的是我在其他地方找到的解决方案:
\usepackage{xunicode}
注意:与包一起使用时xlxtra
会导致错误,所以不要注意:您不能同时使用最后一个解决方案\renewcommand*\d
答案1
FF 系列专业版 [这是正确的字体吗?]似乎没有字形ḥ
:
无论是在线预览也没有出现在三页中的任何一页上“完整字符集”。
可能的解决方案:
- 您
ḥ
从另一种尽可能接近 Seria Pro 的字体中选取。(不好) 你模仿它(自己建造它)。
借助calc
你可以这样做:\makebox[\widthof{h}][c]{\raisebox{-.45ex}{.}}\llap{h}
或者,当然,将其设为你自己的宏:
\newcommand*\doth{\makebox[\widthof{h}][c]{\raisebox{-.45ex}{.}}\llap{h}}
或者,如果您想使用原始字符
ḥ
(毕竟它是 XeLaTeX),请使其处于活动状态:\catcode`\ḥ=\active \newcommand*{ḥ}{\makebox[\widthof{h}][c]{\raisebox{-.45ex}{.}}\llap{h}}
您可以调整尺寸
-.45ex
以使其看起来美观。您使用其他字体。
如果您需要排版大量所选字体中不存在的“奇怪”字符,这可能是最佳选择!
如果你需要很多“下点”字符,你甚至可能需要重新定义现有的 \d
宏来
\renewcommand*\d[1]{\makebox[\widthof{#1}][c]{\raisebox{-.45ex-\depthof{#1}}{.}}\llap{#1}}