![在新命令中使用算术](https://linux22.com/image/412415/%E5%9C%A8%E6%96%B0%E5%91%BD%E4%BB%A4%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%AE%97%E6%9C%AF.png)
尝试编写一个命令,该命令将生成一行圆圈,其中第一个圆圈是n
实心的。所需的功能是\IBmark{l}{m}
其中l
是线的长度,m
是实心圆圈的数量。
LaTeX
在 overleaf 中使用
\newcommand{\IBmark}[2]{\pgfmathparse{#1-#2}\textbf{\multido{}{#2}{\CIRCLE}\multido{}{\pgfmathresult}{\Circle}}}
我尽力尝试使用这个包来实现它tikz
,但是它返回了这个
⚫⚫⚫.0OO
对于l = 5
,而m = 3
不是期望的
⚫⚫⚫ 哦
尝试使用pgf print
命令允许的舍入返回的结果更糟糕。我似乎找不到消除错误的方法。
答案1
您需要添加int(...)
到计算中\pgfmathparse
。
此外,在此实现中,的使用\textbf
是不相关的,因此被删除。
\documentclass{article}
\usepackage{txfonts}
\usepackage{pstricks-add}
\def\CIRCLE{$\medbullet$}
\def\Circle{$\medcirc$}
\newcommand{\IBmark}[2]{\pgfmathparse{int(#1-#2)}%
\multido{}{#2}{\CIRCLE}\multido{}{\pgfmathresult}{\Circle}}
\begin{document}
\IBmark{5}{3}
\end{document}
答案2
欢迎!从我拍的照片来看,你可能想要这样的东西:
\documentclass{article}
\usepackage{tikz}
\newcommand{\IBmark}[2]{\begin{tikzpicture}[baseline={(X.base)},
cfill/.code={\unless\ifnum\X>#2
\tikzset{fill}
\fi}]
\path (1,-0.25ex) node (X) {\vphantom{X}}foreach \X in {1,...,#1}
{(\X*1.2em,0) node[circle,draw,minimum size=1em,cfill] {}};
\end{tikzpicture}}
\begin{document}
Hello \IBmark{5}{3}.
\end{document}
你可以调整幻影节点的垂直位置来获得你想要的任何对齐方式。原则上不需要 Ti钾Z 可以做到这一点,但使用 Ti 确实非常容易钾Z。
答案3
如果我们使用 OpTeX,那么我们可以这样做:
\def\ibmark#1#2{\fornum 1..#1\do{\ifnum##1>#2$\circ$\else$\bullet$\fi}}
\ibmark{5}{3}
\bye