Verwenden von Arithmetik in neuen Befehlen

Verwenden von Arithmetik in neuen Befehlen

Versuch, einen Befehl zu schreiben, der eine Reihe von Kreisen erzeugt, wobei der erste nausgefüllt ist. Die gewünschte Funktionalität wäre, \IBmark{l}{m}wobei ldie Länge der Linie und mdie Anzahl der ausgefüllten Kreise ist.

Verwendung LaTeXauf der Rückseite

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

Ist mein bester Versuch, dies mithilfe des Pakets zum Laufen zu bringen, tikzes gibt jedoch Folgendes zurück

⚫⚫⚫.0OO

Denn l = 5und m = 3statt der gewünschten

⚫⚫⚫OO

Versuche, die vom Befehl erlaubte Rundung zu verwenden, pgf printführten zu schlechteren Ergebnissen. Ich kann anscheinend keine Möglichkeit finden, den Fehler zu beheben.

Antwort1

Sie müssen int(...)zur \pgfmathparseBerechnung etwas hinzufügen.

Auch in dieser Implementierung \textbfist die Verwendung von irrelevant und wird daher entfernt.

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

Bildbeschreibung hier eingeben

Antwort2

Herzlich willkommen! Von den Bildern, die ich mache, könnte Ihnen so etwas gefallen:

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

Bildbeschreibung hier eingeben

Sie können die vertikale Position des Phantomknotens anpassen, um jede gewünschte Ausrichtung zu erhalten. Im Prinzip braucht man Ti nichtkZ dafür, aber es ist sicherlich sehr einfach, dies mit Ti zu erledigenkZ.

Antwort3

Wenn wir OpTeX verwenden, können wir Folgendes tun:

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

verwandte Informationen