问题
我不断得到:
You can't use `\XeTeXcountglyphs` in vertical mode.
试图
\documentclass{article}
\usepackage{fontspec}
\usepackage{pgf}
\usepackage{pgffor}
\begin{document}
\pgfmathsetmacro\maxstep{\XeTeXcountglyphs\font}
\foreach \charstep in {1,...,\maxstep}{%
\XeTeXglyph\charstep
}%
\end{document}
请注意,我已将其更改为,\pgfmathsetmacro
以便\pgfmathtruncatemacro
我可以在我的文档中输入以下内容并且它是有意义的(否则你会得到类似 2625.01 的内容;字形的分数没有意义):
Number of glyphs: \maxstep
答案1
\pgfmathsetmacro
希望看到一个明确的数字,而不是内部寄存器。本来\the\XeTeXcountglyphs\font
可以这样做,但由于另一个原因,它没有这样做:尝试打印与最高计数相对应的字形会导致错误。
解决方案:后退1步。
\documentclass{article}
\usepackage{fontspec}
\usepackage{pgf}
\usepackage{pgffor}
\begin{document}
\pgfmathsetmacro\maxstep{\the\XeTeXcountglyphs\font-1}
\foreach \charstep in {1,...,\maxstep}{%
\XeTeXglyph\charstep\space\space
}
\end{document}
第一个\space
被吞噬\XeTeXglyph
,第二个幸存下来并留出结果的空间。
答案2
您可以使用\edef
,但是索引基于 0,因此您需要减少 1,否则在访问最后一个插槽时会出现错误。
\documentclass{article}
\usepackage{fontspec}
\usepackage{pgf}
\usepackage{pgffor}
\begin{document}
\edef\maxstep{\the\numexpr\XeTeXcountglyphs\font-1\relax}
\typeout{maxstep is \maxstep}
\foreach \charstep in {0,...,\maxstep}{%
\XeTeXglyph\charstep
}%
\end{document}
上面没有错误,虽然我没有显示图像,但结果有点过满
Overfull \hbox (4178.74983pt too wide) in paragraph at lines 13--14