我希望能够在我的论文中使用修饰字母大写 H(Unicode 代码:U+ 1D34),其字体为 Linux Libertine。但它显示效果不佳。如果可能的话,我希望得到一些帮助(更改字体将是我的最后选择)。提前谢谢。
\documentclass[10pt,a4paper]{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine}
\begin{document}
pjèlè\char"1D34
\end{document}
答案1
使用在 浪荡子包裹我得到一块豆腐(因为根本没有显示任何字符,只是一个盒子):
\documentclass[10pt,a4paper]{article}
\usepackage{newunicodechar}
\usepackage{fontspec}
\setmainfont{LinLibertine_R.otf}
\begin{document}
pjèlèᴴ
\end{document}
这意味着字体没有相关字符。在这种情况下,恐怕除了更改字体之外别无选择,但好消息是,有一种方法可以仅更改某个特定字符的字体,如下所示:
\documentclass[10pt,a4paper]{article}
\usepackage{newunicodechar}
\usepackage{fontspec}
\setmainfont{LinLibertine_R.otf}
\newfontfamily\noto{NotoSerif}
\usepackage{newunicodechar}
\newunicodechar{ᴴ}{{\noto ᴴ}}
\begin{document}
pjèlèᴴ
\end{document}
答案2
这是最重要的事。我是认真的。
你应该做的第一件事总是当你得到一个缺失字符错误时,你会设置\tracinglostchars=3
。由于 1980 年代的一些技术债务,当你请求当前字体没有的字符时,TeX 的默认行为是默默失败并在文件中间的某处打印一条错误消息.log
。 \trachinglostchars=3
覆盖此项并使错误成为错误。
事实上,没有理由不将其添加到所有文档中。如果维护者认为他们可以破坏与某些旧文档的向后兼容性,这些旧文档仅因为这个非常有用且重要的文档功能而编译,\tracinglostchars=3
或者也许tracinglostchars=2
仍然可以很好地编译它,并且至少通知你那里有问题,甚至可能是默认的。
如果没有这些,您将需要仔细检查文档的每一份草稿,希望您不会忽略任何缺失的字符。乏味、重复、容易出错、机械的苦差事需要人类花费很长时间才能完成,而这正是计算机被发明的原因。但你必须告诉他们确切地你需要他们做什么,否则他们就不会做。
但是大多数技术人员对此并不了解,而且搜索引擎发送给他们的所有教程都没有告诉他们这一点。
如果您不记得这个答案的其他内容,请记住这一点。
解决方案
然而,在这种情况下,这只能告诉您已经知道的事情:Linux Libertine 没有这个字符。
如果您需要 Libertine 的更多字形版本,首先要尝试 Khaled Hosny 的 Libertine/Biolinum 系列扩展,即 Libertinus 字体。不过,它们碰巧也没有涵盖这一特定字体。
因此,最好的方法是使用缩放的上标大写字母 H。这需要来自相同的字体系列并缩放到相对大小(从relsize
),以便它可以在例如更大、更粗、无衬线的标题中工作。
\documentclass[10pt,a4paper]{scrarticle}
\tracinglostchars=3
\usepackage{libertinus}
\usepackage{relsize}
\usepackage{newunicodechar}
\newcommand\supH{\textsuperscript{\textsmaller[2]{H}}}
\newunicodechar{^^^^1d34}{\supH} % ᴴ
\begin{document}
\section*{Pjèlèᴴ}
pjèlèᴴ
\end{document}
我还定义了别名\supH
,如果您需要 ASCII 命令,可以输入\char"1D34
别名。您可以将其更改为您喜欢的任何内容。然后我将 Unicode 字符设置为活动状态并让它调用此命令。