Problem bei newcommand und String-Übergabe

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


projoe
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Fr 24. Jun 2011, 16:48

Problem bei newcommand und String-Übergabe

Beitrag von projoe »

\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?
projoe

projoe
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Fr 24. Jun 2011, 16:48

Beitrag von projoe »

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}
projoe

Benutzeravatar
iTob
Forum-Meister
Forum-Meister
Beiträge: 1221
Registriert: Mo 19. Apr 2010, 22:19
Kontaktdaten:

Beitrag von iTob »

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 …

projoe
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Fr 24. Jun 2011, 16:48

Beitrag von projoe »

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???
projoe

Benutzeravatar
iTob
Forum-Meister
Forum-Meister
Beiträge: 1221
Registriert: Mo 19. Apr 2010, 22:19
Kontaktdaten:

Beitrag von iTob »

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

projoe
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Fr 24. Jun 2011, 16:48

Beitrag von projoe »

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.
projoe

Benutzeravatar
iTob
Forum-Meister
Forum-Meister
Beiträge: 1221
Registriert: Mo 19. Apr 2010, 22:19
Kontaktdaten:

Beitrag von iTob »

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 …

Antworten