woher die Leerzeichen?

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: woher die Leerzeichen?

von cgnieder » Mo 3. Feb 2014, 10:29

MoonKid hat geschrieben:
rais hat geschrieben:das hat zwar mit dem Problem nichts mehr zu tun, aber ich würde die Zählerdefinition vor die Definition von \machs ziehen: spätestens beim zweiten \machs-Aufruf bekommst Du sonst das Problem, dass Dein Zähler erneut definiert werden will.
Verstehe. Aber dann existiert der Zähler ja global in jedem Code und jedem verwendeten Packet. Das will ich eigentlich vermeiden. Ich möchte (C++-denkend) den Zähler nur in dem Makro gültig haben.

Beim Beenden wird er zerstört - dachte ich.

Wie wäre es einfach mit einer Art undef am Ende des Makros?
Denk daran, dass Makros lediglich Hüllen sind, die mit ihrem Ersetzungstext ausgetauscht werden. Mit der Definition
\newcommand{\machs}[1]{%
    \newcounter{paperandpencil2machs}%
    \setcounter{paperandpencil2machs}{#1}%
    \whiledo{\value{paperandpencil2machs} > 0}
    {%
        X%
        \addtocounter{paperandpencil2machs}{-1}%
    }%
}
hat das verwenden von \machs{7} den Effekt als hättest Du direkt
\newcounter{paperandpencil2machs}%
\setcounter{paperandpencil2machs}{7}%
\whiledo{\value{paperandpencil2machs} > 0}
  {%
      X%
      \addtocounter{paperandpencil2machs}{-1}%
  }%
geschrieben. Ich würde einfach Rainers Vorschlag folgen. Selbst eine Gruppe würde Dir in diesem Fall nicht helfen, da Zähler global definiert werden. Einen Zähler (und alle damit assoziierten Makros zu löschen ist ersten aufwendiger und zweitens eigentlich gar nicht möglich. Man könnte die Makros lediglich gleich \relax oder gleich einem undefinierten Makro setzen.)

Grüße

von MoonKid » Mo 3. Feb 2014, 10:01

rais hat geschrieben:das hat zwar mit dem Problem nichts mehr zu tun, aber ich würde die Zählerdefinition vor die Definition von \machs ziehen: spätestens beim zweiten \machs-Aufruf bekommst Du sonst das Problem, dass Dein Zähler erneut definiert werden will.
Verstehe. Aber dann existiert der Zähler ja global in jedem Code und jedem verwendeten Packet. Das will ich eigentlich vermeiden. Ich möchte (C++-denkend) den Zähler nur in dem Makro gültig haben.

Beim Beenden wird er zerstört - dachte ich.

Wie wäre es einfach mit einer Art undef am Ende des Makros?

von rais » Mo 3. Feb 2014, 09:54

das hat zwar mit dem Problem nichts mehr zu tun, aber ich würde die Zählerdefinition vor die Definition von \machs ziehen: spätestens beim zweiten \machs-Aufruf bekommst Du sonst das Problem, dass Dein Zähler erneut definiert werden will.

von cgnieder » So 2. Feb 2014, 21:56

Du hast ein paar Stellen, an denen Du das auskommentieren vergessen hast bzw. falsch gemacht hast:
\documentclass{scrartcl}

\usepackage{ifthen}

\newcommand{\machs}[1]{%
    \newcounter{paperandpencil2machs}% <= hier nicht nötig aber empfohlen
    \setcounter{paperandpencil2machs}{#1}% <= hier nötig
    \whiledo{\value{paperandpencil2machs} > 0}
    {% <= ganz heran rutschen
        X% hier auch das Zeilenende verstecken
        \addtocounter{paperandpencil2machs}{-1}% <= ganz heran rutschen
    }% <= ganz heran rutschen
} % <= hier ist es nutzlos

\begin{document}
x\machs{7}x

\end{document}
Grüße

von Gast » So 2. Feb 2014, 19:22

Du hast zwar schon richtig die restliche Zeile auskommentiert, aber leider war da immer noch ein Leerzeichen mit enthalten und dieses wird dann natürlich mit gezählt. Fügt dein Editor zufällig vor dem Prozentzeichen ein Leerzeichen mit ein?
\documentclass{scrartcl}

\usepackage{xltxtra}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}

\usepackage{ifthen}

\newcommand{\machs}[1]{%
    \newcounter{paperandpencil2machs}
    \setcounter{paperandpencil2machs}{#1}
    \whiledo{\value{paperandpencil2machs} > 0}
    {%
        X%
        \addtocounter{paperandpencil2machs}{-1}%
    }%
} %
\begin{document}
\machs{7}

XXXXXXX
\end{document}

woher die Leerzeichen?

von MoonKid » So 2. Feb 2014, 18:45

Das Thema der mysteriösen Leerzeichen hatte ich schon. Scheinbar habe ich es aber nicht verstanden. Den in diesem Beispiel ist zwischen den X in der ersten Zeile, immer noch ein Leerzeichen.
\documentclass{scrartcl}

\usepackage{xltxtra}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}

\usepackage{ifthen}

\newcommand{\machs}[1] {%
    \newcounter{paperandpencil2machs}
    \setcounter{paperandpencil2machs}{#1}
    \whiledo {\value{paperandpencil2machs} > 0}
    { %
        X\ignorespaces
        \addtocounter{paperandpencil2machs}{-1} %
    } %
} %
\begin{document}
\machs{7}

XXXXXXX
\end{document}

Nach oben