Ich möchte den den String "/t" zb. 33 Mal hintereinander schreiben... /t/t/t/usw. Wie geht das im Latex?

gefragt 08 Sep '14, 06:08

Jeff's gravatar image

Jeff
51113
Akzeptiert: 0%

bearbeitet 08 Sep '14, 06:08

Nur zur Info: einen „String“, wie ihn andere Programmiersprachen kennen, gibt es in (La)TeX nicht.

(08 Sep '14, 13:37) Clemens

Du kannst die Ausgabe über eine Schleife vornehmen. Dafür gibt es verschiedene Möglichkeiten. Hier sind mal drei Beispiele:

Mit \foreach

Open in writeLaTeX
\documentclass{scrartcl}
\usepackage{pgffor}
\begin{document}
\foreach \i in {1,...,33}{/t}
\end{document}

Mit \multido

Open in writeLaTeX
\documentclass{scrartcl}
\usepackage{multido}
\begin{document}
\multido{}{33}{/t}
\end{document}

Mit \whiledo

Open in writeLaTeX
\documentclass{scrartcl}
\usepackage{ifthen}
\newcounter{zaehler}
\begin{document}
\setcounter{zaehler}{0}
\whiledo{\value{zaehler}<33}{%
  /t%
  \stepcounter{zaehler}%
}
\end{document}
Permanenter link

beantwortet 08 Sep '14, 06:49

esdd's gravatar image

esdd
14.2k53251

bearbeitet 08 Sep '14, 09:23

Als Alternative zu Elkes Antwort hier vier weitere Möglichkeiten, die ersten drei nur mit LaTeX2e-Bordmitteln, die vierte mit expl3. Wenn Zu den einzelnen Varianten weitere Erklärungen gewünscht sind, reiche ich die gerne nach.

Open in writeLaTeX
\documentclass{article}
\usepackage{expl3,xparse}

% nur LaTeX2e:
\makeatletter
\newcounter{tmp}

% nicht expandierbar:
\newcommand\verfielfacheA[2]{%
  \setcounter{tmp}{#1}%
  \ifnum\value{tmp}>0
    #2%
    \addtocounter{tmp}{-1}%
    \expandafter\@firstofone
  \else
    \expandafter\@gobble
  \fi
  {\verfielfacheA{\value{tmp}}{#2}}%
}

% nicht expandierbar:
\newcommand\verfielfacheB[2]{%
  \setcounter{tmp}{#1}%
  \@whilenum{\value{tmp}>0}\do{#2\addtocounter{tmp}{-1}}%
}

% expandierbar:
\newcommand\verfielfacheC[2]{%
  \ifnum#1>0
    \expandafter\@firstofone
  \else
    \expandafter\@gobble
  \fi
  {#2\expandafter\verfielfacheC\expandafter{\the\numexpr#1-1\relax}{#2}}%
}
\makeatother

% mit expl3 und xparse, expandierbar:
\ExplSyntaxOn
\cs_new:Npn \jeff_multiplicate:nn #1#2
  { \prg_replicate:nn {#1} {#2} }
\DeclareExpandableDocumentCommand \verfielfacheD {mm}
  { \jeff_multiplicate:nn {#1} {#2} }
\ExplSyntaxOff

\begin{document}

+\verfielfacheA{3}{/t}+
+\verfielfacheB{3}{/t}+
+\verfielfacheC{3}{/t}+
+\verfielfacheD{3}{/t}+

\end{document}
Permanenter link

beantwortet 08 Sep '14, 09:18

Clemens's gravatar image

Clemens
19.0k112960

bearbeitet 08 Sep '14, 09:19

Plain TeX

Hier wird \loop ... \if... ... \else ... \repeat verwendet. Siehe TeX by Topic S. 118 für Details.

Open in writeLaTeX
\newcount\printcount
\def\multiprint#1#2{
  \printcount=0
  \loop\ifnum\printcount<#1
    #2%
  \advance\printcount by 1\repeat
}
\multiprint{33}{/t}
\bye
Permanenter link

beantwortet 08 Sep '14, 11:48

Henri's gravatar image

Henri
10.0k31730

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×4

Frage gestellt: 08 Sep '14, 06:08

Frage wurde angeschaut: 1,658 Mal

Zuletzt aktualisiert: 08 Sep '14, 13:37