TikZ/foreach:读出Unicode符号序列

TikZ/foreach:读出Unicode符号序列

我怎样才能通过 foreach 循环读出\char"1F0A1,...,\char"1F0DF
这个意思?\char127137, ..., \char127199

如果我使用第二个版本,我会得到Dimensions too large;并且 TikZ 在第一个版本中不喜欢十六进制数。

TikZ 是否知道这里的解决方案,或者这是否只有通过其他方式才有可能?

提示:通过使用字体Segoe UI SymbolDejaVu 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}

在此处输入图片描述

您可以修改循环以丢弃不需要的插槽。

相关内容