我怎样才能通过 foreach 循环读出\char"1F0A1,...,\char"1F0DF
这个意思?\char127137, ..., \char127199
如果我使用第二个版本,我会得到Dimensions too large
;并且 TikZ 在第一个版本中不喜欢十六进制数。
TikZ 是否知道这里的解决方案,或者这是否只有通过其他方式才有可能?
提示:通过使用字体Segoe UI Symbol
或DejaVu Sans
这应该给出unicode 扑克牌符号:
使用不正确的数字进行 Test-MWE:
% arara: lualatex
\documentclass[a4paper]{article}
\usepackage{tikz}
\usepackage{fontspec}
\newfontfamily\myfont{DejaVu Sans}
\begin{document}
\section{Test:}
\foreach[evaluate={ \LineBreak=( int( mod(\n-1,13) ) },
evaluate={ \Seperator=( \LineBreak==12 ? "." : ",~") }
] \n in {14,...,78}{%% <--- here are not the correct numbers...
\myfont\char"\n \Seperator \ifnum\LineBreak=12 \\ \fi
}%%
\end{document}
答案1
您可能可以通过\foreach
从 37 到 99 的循环,使用算术来打印正确的字形
\char\numexpr127100+\n\relax
这是一个不同的循环;请注意,扑克牌块中每种花色都有 16 个槽。
\documentclass[a4paper]{article}
\usepackage{fontspec}
\newfontfamily\cardfont{DejaVu Sans}
\ExplSyntaxOn
\NewDocumentCommand{\intstep}{m O{1} m +m}
{% #1 = start, #2 = step, #3 = end, #4 = action
\int_step_inline:nnnn { #1 } { #2 } { #3 } { #4 }
}
\NewDocumentCommand{\actionmodulo}{m m +m +m}
{% #1 = integer to test, #2 = modulo, #3 = normal action, #4 = action at multiples of #1
\int_compare:nTF { \int_mod:nn { #1 } { #2 } == 0 } { #4 } { #3 }
}
\ExplSyntaxOff
\newcounter{step}
\begin{document}
\intstep{"1F0A1}{"1F0DF}{%
{\cardfont\symbol{#1}}%
\stepcounter{step}%
\actionmodulo{\value{step}}{16}{, }{.\par}%
}
\end{document}
您可以修改循环以丢弃不需要的插槽。