In \forloop kleinergleich

Schriftbild, Absätze und Auflistungen einstellen


Lorz
Forum-Anfänger
Forum-Anfänger
Beiträge: 47
Registriert: Mi 26. Feb 2020, 22:13
Wohnort: Bremen

In \forloop kleinergleich

Beitrag von Lorz »

Hallo!

Ich benutze
\newcounter{ct}
\forloop{ct}{1}{\value{ct} < 4} {Latex macht was}
und möchte nicht bis unterhalb von 4, sondern bis kleinergleich 3 zählen.
Also ich suche quasi nach einem Befehl, der semantisch statt "<" ein "=<" einfügt. Aber mit "=<" geht es leider nicht.

Weiß jemand Rat?

gast.

Re: In \forloop kleinergleich

Beitrag von gast. »

Wo ist dieses \forloop denn definiert? Und was spricht gegen <4? Wie wäre es mit einem Minimalbeispiel?

Jedenfalls kennt TeX selbst kein <= oder >=. Ob das Paket, das \forloop bereitstellt, hier mehr macht als ein \ifnum-Primitiv zu verwenden, weiß ich nicht, das du dafür zu wenige Infos geliefert hast. Ggf. steht das aber in der Doku des Pakets.

Lorz
Forum-Anfänger
Forum-Anfänger
Beiträge: 47
Registriert: Mi 26. Feb 2020, 22:13
Wohnort: Bremen

Re: In \forloop kleinergleich

Beitrag von Lorz »

Danke an gast für die rasche Antwort.

Ich wollte das Minimalbeispiel bei so einer kurzen und hoffentlich glasklaren Frage vermeiden. Auch damit ihr Helfer nicht so viel Nachvollziehungsarbeit leisten müsst. Aber gut, wenn das hier nicht anders akzeptiert wird:

Problem:

Also ich möchte gern einen Unterzähler im Zähler haben. Es soll etwas entstehen wie eine Liste mit
1.1
1.2
2.1
3.1
3.2
3.3
3.4
4.1
4.2
usw
Es handelt sich hierbei um die Nummer von Aufgaben bzw. Unteraufgaben, die aus einem Archiv abgerufen werden.
Die schnelle Weg wäre, einfach so zu tun, als ob es vom Aufgabentyp der Kategorie 1 nicht bloß 2 Unteraufgaben gibt, sondern 3. Und vom Aufgabentyp der Kategorie 2 nicht bloß 1 Unteraufgabe gibt, sondern 2 usw. Das habe ich jetzt vorübergehen so gemacht. Aber das funktioniert an anderer Stelle nicht mehr und es stiftet zudem Verwirrung, wenn man wieder neu ins Dokument schaut.

Die Anzahl an Unteraufgaben sind als Wert einer Variablen zugeordnet. Die heißt für die Aufgabenanzahl der Kategorie 1 "AA1". Weil aber eine Variable keine Zahl im Namen haben darf, muss ich den Befehl \expandafter\newcommand\csname AA1\endcsname{2} (Du siehst, das ufert hier aus mit den Erklärungen...) verwenden.
Der oben entstandene Ausdruck gelangt weiter in einen Input-Befehl usw , aber ich versuche mal wegzukürzen und mache hoffentlich keine Fehler bei der Verkürzung.

Hier der Versuch eines Minimalbeispiels:
\documentclass[fontsize=11pt,DIV=1,a4paper]{scrartcl}

\usepackage{forloop}

\expandafter\newcommand\csname AA1\endcsname{2} 
\expandafter\newcommand\csname AA2\endcsname{1}
\expandafter\newcommand\csname AA3\endcsname{4}
\expandafter\newcommand\csname AA4\endcsname{2}

\begin{document}

\newcounter{ct} \newcounter{dt}
\forloop{ct}{1}{\value{ct} < 5}{\forloop{dt}{1}{\value{dt} <\csname AA\arabic{ct}\endcsname}{Aufgabe0\arabic{ct}0\arabic{dt}}}		

\end{document}

Lorz
Forum-Anfänger
Forum-Anfänger
Beiträge: 47
Registriert: Mi 26. Feb 2020, 22:13
Wohnort: Bremen

Re: In \forloop kleinergleich

Beitrag von Lorz »

..habe jetzt eine unelegante Lösung gefunden,
statt \forloop{ct}{1}{\value{ct} < 4} kann man
\forloop{ct}{1}{\not{\value{ct} > 3}} benutzen
das löst mein Problem.

Falls jemand eine bessere/direkte Lösung hat, gerne her damit!

Antworten