Eigene Struktur zum steuern, wie oft etwas wiederholt wird

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Eigene Struktur zum steuern, wie oft etwas wiederholt wird

von cgnieder » Fr 11. Mai 2012, 22:30

bloodworks hat geschrieben:...hehehe jetzt fehlt nur noch die Context Lösung...
Damit kann ja vielleicht einer von denen dienen? :)

von bloodworks » Fr 11. Mai 2012, 22:19

cgnieder hat geschrieben:Nur der Vollständigkeit halber hier die expl3-Lösung:
...hehehe jetzt fehlt nur noch die Context Lösung...

von cgnieder » Fr 11. Mai 2012, 18:51

Nur der Vollständigkeit halber hier die expl3-Lösung:
\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand \myrepeat { O{1}m }
  {
    \int_zero:N \l_tmpa_int
    % Schleife nur bis zum vorletzten Mal, damit wir ein Leerzeichen nur zwischen
    % nicht aber nach der letzten Ausgabe haben
    \int_while_do:nNnn { \l_tmpa_int } < { #1 - 1 }
      { \int_incr:N \l_tmpa_int #2 \tl_use:N \c_space_tl }
    #2
  }
\ExplSyntaxOff

\begin{document}

\myrepeat[4]{test}!

\myrepeat{nur einmal}?

\myrepeat[100]{oft}!

\end{document}
Bild

Grüße
Dateianhänge
repeat.png
repeat.png (13.18 KiB) 3367 mal betrachtet

von bloodworks » Fr 11. Mai 2012, 16:37

Besserwisser hat geschrieben:Weder \newcount (das ist ein plainTeX-Befehl) noch \newcounter (die LaTeX-Anweisung zum Anfordern eines neuen LaTeX-Zählers) sollten innerhalb der Anweisung stehen. Dabei wird nämlich dann bei jedem Aufruf der Anweisung ein neues Zählerregister belegt aber nie wieder frei gegeben. \newcount und \newcounter gehören deshalb (wie \newlength, \newskip etc.) global, außerhalb der Definition der Anweisung \mycom verwendet.

BTW: Das ifthen-Paket bietet ebenfalls Schleifenkonstrukte wie \while. Es gibt auch ein Paket, das für Zähler verwendet werden kann, die lediglich lokal benötigt werden. Ich habe nur vergessen wie das heißt, weil ich in diesen Fällen einfach einen der temporär nutzbaren Zähler des LaTeX-Kern verwende, beispielsweise \@tempcnta.
Zu 1. ja -> schlamperrei

Zu BTW: Ja das sollte aber in diesem Fall egal sein und um etwas zu zeigen ist es sicher besser auch zu zeigen wo der Befehl (oder Zähler) herkommt.

von Sepp99 » Fr 11. Mai 2012, 14:50

Workaround mit Schleife:
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{ifthen}

\newcounter{ctra}

\newcommand*{\schleife}[2]{%
\setcounter{ctra}{0}
\whiledo {\value{ctra} < #2}%
{%
\large #1%
\stepcounter {ctra}%
}}

\begin{document}
\schleife{A}{5}

\schleife{G}{15}

\end{document}
Dazu http://www.matthiaspospiech.de/blog/200 ... if-abfrage

Gruß, Sepp.-

EDIT: etwas zu spät

von Besserwisser » Fr 11. Mai 2012, 14:47

Weder \newcount (das ist ein plainTeX-Befehl) noch \newcounter (die LaTeX-Anweisung zum Anfordern eines neuen LaTeX-Zählers) sollten innerhalb der Anweisung stehen. Dabei wird nämlich dann bei jedem Aufruf der Anweisung ein neues Zählerregister belegt aber nie wieder frei gegeben. \newcount und \newcounter gehören deshalb (wie \newlength, \newskip etc.) global, außerhalb der Definition der Anweisung \mycom verwendet.

BTW: Das ifthen-Paket bietet ebenfalls Schleifenkonstrukte wie \while. Es gibt auch ein Paket, das für Zähler verwendet werden kann, die lediglich lokal benötigt werden. Ich habe nur vergessen wie das heißt, weil ich in diesen Fällen einfach einen der temporär nutzbaren Zähler des LaTeX-Kern verwende, beispielsweise \@tempcnta.

von bloodworks » Fr 11. Mai 2012, 14:22

Das ist relativ simpel:
\documentclass{report}


\newcommand\mycom[2][\mydefault]{%
  \def\mydefault{1}%
  \newcount\n
  \n=0
  \loop #2 
  \advance\n by 1
  \ifnum \n < #1\repeat
}
\begin{document}
\mycom[10]{y}
\end{document}
Ich empfehle dazu texbytopic

Eigene Struktur zum steuern, wie oft etwas wiederholt wird

von Gast » Fr 11. Mai 2012, 14:00

Hallo,

ich würde gerne eine eigentilch simple eigendefinition erstellen. Ich hätte gerne ein eigene Struktur, über die ich steuern kann, wie häufig ein zeichen wiederholt ausgegeben werden soll.

Bsp:
\mycommand[14]{testzeichen }

In diesem Beispiel hätte ich dann gerne die ausgabe von testzeichen testzeichen testzeichen testzeichen ... testzeichen 14 mal.

Leider habe ich bisher noch nicht den richtigen Ansatz gefunden. Habt ihr mit dafür eine Lösung oder einen Tip?

Danke

Nach oben