
Intentando escribir un comando que produzca una línea de círculos con el primero n
lleno. La funcionalidad deseada sería \IBmark{l}{m}
dónde l
está la longitud de la línea y m
el número de círculos rellenos.
Usando LaTeX
al dorso
\newcommand{\IBmark}[2]{\pgfmathparse{#1-#2}\textbf{\multido{}{#2}{\CIRCLE}\multido{}{\pgfmathresult}{\Circle}}}
Es mi mejor intento de hacer que esto funcione usando el tikz
paquete, sin embargo, devuelve esto.
⚫⚫⚫.0OO
Para l = 5
, y m = 3
en lugar de lo deseado
⚫⚫⚫OO
Los intentos de utilizar el redondeo permitido por el pgf print
comando arrojaron peores resultados. Parece que no puedo encontrar una manera de eliminar el error.
Respuesta1
Necesitas agregar int(...)
al \pgfmathparse
cálculo.
Además, en esta implementación, el uso de \textbf
es irrelevante y, por tanto, se elimina.
\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}
Respuesta2
¡Bienvenido! De las fotos que tomé, es posible que quieras algo como esto:
\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}
Puede ajustar la posición vertical del nodo fantasma para obtener la alineación que desee. En principio no se necesita TikZ para eso, pero ciertamente es muy fácil hacerlo con Ti.kZ.
Respuesta3
Si estamos usando OpTeX entonces podemos hacer:
\def\ibmark#1#2{\fornum 1..#1\do{\ifnum##1>#2$\circ$\else$\bullet$\fi}}
\ibmark{5}{3}
\bye