下面的代码
\documentclass{article}
\DeclareFontFamily{U}{skulls}{}
\DeclareFontShape{U}{skulls}{m}{n}{ <-> skull }{}
\newcommand{\skull}{\text{\usefont{U}{skulls}{m}{n}\symbol{'101}}}
\begin{document}
Here is a skull:
$\skull$
\end{document}
在我将 TeXLive 更新到 2017 版本后,它就停止工作了。
错误如下:
! Undefined control sequence.
\skull ->\text
{\usefont {U}{skulls}{m}{n}\symbol {'101}}
l.9 $\skull
$
虽然一切都可以使用\usepackage{skull}
,但我不想使用它,因为正如我以前问题的答案所建议的那样,为一个符号加载一个包是不合理的,而且它还会与其他一些包冲突。
答案1
luatex 不会触发mktextfm
,因此如果你获取 Alan 答案中的文档并与 lualatex 一起使用,你会得到
luaotfload | db : Reload initiated (formats: otf,ttf,ttc); reason: "Font skull not found.".
luaotfload | resolve : sequence of 3 lookups yielded nothing appropriate.
! Font \U/skulls/m/n/10=skull at 10pt not loadable: metric data not found or ba
d.
但如果你用 pdflatex 运行它,你会得到
...
kpathsea: Running mktextfm skull
...
然后生成 tfm 并且原始文档也可以与 lualatex 一起使用
答案2
答案3
抱歉,但该文档不符合任何版本的 TeX Live。为了完整起见,我尝试使用 TL 从 2012 年到 2017 年,编译总是停止并显示
! Undefined control sequence.
\skull ->\text
{\usefont {U}{skulls}{m}{n}\symbol {'101}}
l.9 $\skull
$
这是很清楚的,因为\text
需要amstext
(由 加载amsmath
)。
如果您不想使用amsmath
或amstext
(但我认为没有理由使用),您可以\skull
用不同的方式定义:
\DeclareRobustCommand{\skull}{\ifmmode\mathskull\else\textskull\fi}
\newcommand\textskull{{\usefont{U}{skulls}{m}{n}\symbol{'101}}}
\makeatletter
\newcommand\mathskull{%
\@check@mathfonts
\mathchoice
{\mbox{\fontsize{\tf@size}{\z@}\textskull}}
{\mbox{\fontsize{\tf@size}{\z@}\textskull}}
{\mbox{\fontsize{\sf@size}{\z@}\textskull}}
{\mbox{\fontsize{\ssf@size}{\z@}\textskull}}%
}
\makeatother
完整示例:
\documentclass{article}
\DeclareFontFamily{U}{skulls}{}
\DeclareFontShape{U}{skulls}{m}{n}{ <-> skull }{}
\DeclareRobustCommand{\skull}{\ifmmode\mathskull\else\textskull\fi}
\newcommand\textskull{{\usefont{U}{skulls}{m}{n}\symbol{'101}}}
\makeatletter
\newcommand\mathskull{%
\check@mathfonts
\mathchoice
{\mbox{\fontsize{\tf@size}{\z@}\textskull}}
{\mbox{\fontsize{\tf@size}{\z@}\textskull}}
{\mbox{\fontsize{\sf@size}{\z@}\textskull}}
{\mbox{\fontsize{\ssf@size}{\z@}\textskull}}%
}
\makeatother
\begin{document}
Here is a skull: $\skull$ but also in text \skull.
$A_{\skull}$
\end{document}
我相信这一点,\usepackage{amsmath}
而且\text
更容易。
使用 LuaLaTeX 或 XeLaTeX 和具有所需字形的字体(Symbola 是免费的):
\documentclass{article}
\usepackage{amsmath,fontspec,newunicodechar}
\newfontface{\skullfont}{Symbola}[Scale=MatchUppercase]
\NewDocumentCommand{\skull}{}{%
\text{\skullfont\symbol{"1F571}}%
}
\newunicodechar{