Использование арифметики в новых командах

Использование арифметики в новых командах

Попытка написать команду, которая создаст линию кругов с первым nзаполненным. Желаемая функциональность будет такой: \IBmark{l}{m}где l— длина линии, а m— количество заполненных кругов.

Использование LaTeXна обороте

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

Это моя лучшая попытка заставить это работать с помощью tikzпакета, однако он возвращает это

⚫⚫⚫.0OO

Для l = 5, и m = 3вместо желаемого

⚫⚫⚫OO

Попытки использовать округление, разрешенное командой, 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кЗ.

решение3

Если мы используем OpTeX, то мы можем сделать:

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

Связанный контент