Problem bei newcommand und String-Übergabe

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: Problem bei newcommand und String-Übergabe

von iTob » So 26. Jun 2011, 17:01

Also ob das jetzt ein Bug ist, hm?

Ich werde mich da nicht weiter hinter klemmen, weil mich das Problem ja nie betroffen hat. Du könntest auf tex.stackexchange und/oder an die comp.text.tex-Mailingliste schreiben. Dort lesen viele Paketautoren mit. Alternativ kann man die meisten auch direkt per E-mail (siehe Doku) anschreiben …

von projoe » So 26. Jun 2011, 15:26

ok, danke. Hab mal ein wenig herumgegoogelt und hab jetzt so ein kleines Gefühl dafür, was eigentlich beim compilieren passiert. Denke aber, dass das Ganze ein Bug ist und dass man einen Entwickler mal drauf aufmerksam machen könnte. Gibt es dafür auch ein Forum? Falls Du, lieber Tobi, dich dazu berufen fühlst, dann könntest Du das ja mal machen. Für mich ist das jetzt dank Deiner Hilfe beendet.

von iTob » Sa 25. Jun 2011, 23:42

Hm …
eigentlich ist LaTeX ja auch ganz einfach – bis auf manchmal.

In deinem Fall ist das Problem, dass die Rahmenumgebung davon ausgeht. nach einem Absatz zu kommen um im vertikalen Modus (genauer kann ich das nicht erklären, aber google mal vmode und latex oder schau im tex book) gesetzt zu werden, Jetzt ist es aber so, dass \paragraph nach sich keinen Absatz beendet (un in den vmode geht) sondern den folgenden Text in die gleiche Zeile wie die Überschrift schreibt. Das kollidiert dann mit den Erwartungen der Rahmenumgebung und du bekommst ein seltsames Ergebnis.
Besser kann ich es nicht erklären, weil ich es nicht besser weiß …

Rausgefunden habe ich das, in dem ich versucht habe, die Rahmenbox mit \newline in eine andere Zeile zu rücken und dann hab ich die Meldung „There’s no line to end here“ bekommen und dann geraten, das er vielleicht im falschen Modus ist. War auch Glück dabei, dass ich eine Lösung gefunden habe …

Gute Nacht
Tobi

von projoe » Sa 25. Jun 2011, 21:09

Super, jetzt tut es wirklich und die Zeile
 \vspace{-0.9\baselineskip}\leavevmod
macht tatsächlich den Unterschied.

Bis jetzt hatte ich den Ansatz, dass ich LaTeX einfach anwenden könnte, ohne vorher ein Semester LaTeX studieren zu müssen. Aber jetzt bin ich echt irritiert. Was zum Kuckuck hat dich denn auf die Idee gebracht, diese Zeile einzufügen: \vspace raubt ein wenig vertikalen Abstand und \leavemod macht was und wieso behebt das mein Problem??? Und warum zum Kuckuck hat sich LaTeX vorher erlaubt, mal die Reihenfolge im Text zu ändern???

von iTob » Sa 25. Jun 2011, 11:12

Hallo,

ich habe deinen Code um \vspace{-0.9\baselineskip}\leavevmode ergänzt. (Außerdem noch babel und blindtext, das tut aber nicht zu Sache.) Damit scheint es zu gehen.
\documentclass{article} 
\usepackage{color} 
\usepackage{framed} 
\usepackage{amsthm} 

\usepackage[ngerman]{babel}
\usepackage{blindtext}

\newenvironment{fshaded}{% 
\def\FrameCommand{\fcolorbox{framecolor}{shadecolor}}% 
\MakeFramed {\FrameRestore}}% 
{\endMakeFramed} 

\newtheorem{BLOCK}{} 

\newenvironment{blockblue}[1]{%
	\definecolor{shadecolor}{rgb}{0.8,0.8,1}%
	\definecolor{framecolor}{rgb}{0,0,0}%
	\vspace{-0.9\baselineskip}\leavevmode% HIER ...
	\begin{fshaded}%
		\begin{BLOCK}{\bf #1}}% 
{%
		\end{BLOCK}%
	\end{fshaded}%
} 


\newcommand{\uberschrift}[1]{\paragraph*{#1}} 

\begin{document} 

\uberschrift{Irgendwas mit Leerzeichen} 

\blindtext[2]

\begin{blockblue}{Definition} 
$1+1:=2$ 
\end{blockblue} 

\Blindtext

\paragraph*{Test}

\begin{blockblue}{Definition} 
$1+1:=2$ 
\end{blockblue} 

\end{document} 
Ich weiß nicht, ob das die vorgesehene Lösung ist, aber sie funktioniert.
Wenn dir das nicht gefällt, sag mir was nicht gut ist, dann schaue ich nochmal.


PS: Bitte nutze den CODE-Button für dein sonst wirklich gutes Beispiel …

von projoe » Fr 24. Jun 2011, 17:46

sorry, ich bin's nochmal, bin völlig durcheinander. Jetzt mit sauberem Code zum Ausprobieren.

Also mein Code lautet wie folgt. Und im Ergebnis steht die Überschrift "Irgendwas" dann unter dem blauen Block "1+1:=2", obwohl es im tex-File umgekehrt ist????

Fügt man im Code zwischen \uberschrift und \begin{blockblue} noch was ein (Kommentarzeichen unten rausnehmen!), dann ist alles in der richtigen Reihenfolge???

Wer kann mir helfen? Würde gerne ne Belohnung ausschreiben, bin am Verzweifeln!

\documentclass{article}
\usepackage{color}
\usepackage{framed}
\usepackage{amsthm}

\newenvironment{fshaded}{%
\def\FrameCommand{\fcolorbox{framecolor}{shadecolor}}%
\MakeFramed {\FrameRestore}}%
{\endMakeFramed}

\newtheorem{BLOCK}{}

\newenvironment{blockblue}[1]
{\definecolor{shadecolor}{rgb}{0.8,0.8,1} \definecolor{framecolor}{rgb}{0,0,0} \begin{fshaded} \begin{BLOCK}{\bf #1}}
{\end{BLOCK}\end{fshaded}}


\newcommand{\uberschrift}[1]{\paragraph*{#1}}

\begin{document}

\uberschrift{Irgendwas}

%Text

\begin{blockblue}{Definition}
$1+1:=2$
\end{blockblue}

\end{document}

Problem bei newcommand und String-Übergabe

von projoe » Fr 24. Jun 2011, 16:55

\newcommand{\uberschrift}[1]{\paragraph*{#1}}

führt bei Eigabe von

\uberschrift{EinWort}

zum gewünschten Ergebnis, aber bei

\uberschrift{Ein Wort}

nicht

Was mache ich falsch?

Nach oben