!['\v{C}' 字符不会在不包含 T1 编码的 'Č' 的字体中呈现](https://linux22.com/image/396706/'%5Cv%7BC%7D'%20%E5%AD%97%E7%AC%A6%E4%B8%8D%E4%BC%9A%E5%9C%A8%E4%B8%8D%E5%8C%85%E5%90%AB%20T1%20%E7%BC%96%E7%A0%81%E7%9A%84%20'%C4%8C'%20%E7%9A%84%E5%AD%97%E4%BD%93%E4%B8%AD%E5%91%88%E7%8E%B0.png)
我正在尝试排版一个包含“Č”的单词,并且根据上下文,它必须以无粗体 quattrocento 字体出现。
但是,只要我将 fontencoding 设置为 T1,该字符就不会出现。以下 MWE 会创建一个空白页,但应该会创建一个粗体无“Č”的字符。
注释掉 fontenc 行似乎可以解决问题,但我更愿意为这个字符设置一个特殊情况,然后更改整个文档的 fontencoding
梅威瑟:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[sf,scaled=0.9]{quattrocento}
\begin{document}
\textbf{\textsf{\v{C}}}
\end{document}
答案1
该字体缺少几个预制重音符号。以无法使用连字符连接包含 Č 的单词为代价,您可以这样做
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[sf,scaled=0.9]{quattrocento}
\providecommand*\UndeclareTextComposite[3]{%
\expandafter\let\csname\expandafter\string\csname
#2\endcsname\string#1-#3\endcsname\relax}
\UndeclareTextComposite{\v}{T1}{C}
\begin{document}
\textsf{\v{C}}
\textbf{\textsf{\v{C}}}
\end{document}
看https://tex.stackexchange.com/a/58115/4427对于\UndeclareTextCompositeCommand
。对您需要的其他缺失重音字符执行类似操作。
\v{C}
无论您直接使用 还是都无关紧要Č
。
笔记。LaTeX 字体包的维护者指出,字形缺失是因为它们甚至不在 TeX 版本所衍生的 OpenType 字体中。
答案2
这是使用 OpenType 字体的另一种解决方案。我下载的 Quattrocento Sans 版本不包含 Unicode 字符 U+030C(结合 caron)或 U+010C(拉丁大写字母 C 与 Caron),但你可以用 U+02C7(Caron)和 来伪造它\accent
。你也可以使用Ulrike Fischer 对这个类似问题的解决方案。
\documentclass{article}
\usepackage{fontspec, newunicodechar}
\defaultfontfeatures{Scale = MatchLowercase}
\setmainfont{Quattrocento Roman}[Scale = 1.0]
\setsansfont{Quattrocento Sans}
\renewcommand\v[1]{{\accent"02C7 #1}}
\newunicodechar{Č}{\v{C}}
\newunicodechar{č}{\v{c}}
\begin{document}
\textbf{\textsf{\v{C}Č}}
\end{document}
警告:这支持 Č (U+010C),但如果将其写为 Č (U+43 U+030C),则不一定有效。