Usando aritmética em novos comandos

Usando aritmética em novos comandos

Tentativa de escrever um comando que produzirá uma linha de círculos com o primeiro npreenchido. A funcionalidade desejada seria \IBmark{l}{m}onde lestá o comprimento da linha e mo número de círculos preenchidos.

Usando LaTeXno verso

\newcommand{\IBmark}[2]{\pgfmathparse{#1-#2}\textbf{\multido{}{#2}{\CIRCLE}\multido{}{\pgfmathresult}{\Circle}}}

É a minha melhor tentativa de fazer isso funcionar usando o tikzpacote, mas ele retorna isso

⚫⚫⚫.0OOO

Para l = 5, e m = 3em vez do desejado

⚫⚫⚫OO

As tentativas de utilizar o arredondamento permitido pelo pgf printcomando retornaram resultados piores. Não consigo encontrar uma maneira de remover o erro.

Responder1

Você precisa adicionar int(...)ao \pgfmathparsecálculo.

Além disso, nesta implementação, o uso de \textbfé irrelevante e, portanto, é removido.

\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}

insira a descrição da imagem aqui

Responder2

Bem-vindo! Pelas fotos que tirei, você pode querer algo assim:

\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}

insira a descrição da imagem aqui

Você pode ajustar a posição vertical do nó fantasma para obter o alinhamento desejado. Em princípio não é necessário TikZ para isso, mas certamente é muito fácil fazer isso com TikZ.

Responder3

Se estivermos usando OpTeX, podemos fazer:

\def\ibmark#1#2{\fornum 1..#1\do{\ifnum##1>#2$\circ$\else$\bullet$\fi}}
\ibmark{5}{3}
\bye

informação relacionada