PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unlogischer Fehler (?)



Liberty
13-04-2007, 19:24
Moin,

*offtopic, wollte ich nur mal loswerden*
ich freunde mich immer mehr mit LaTeX an, das einzige, was mich im großen und ganzen manchmal stört, dass viele LaTeX-"Experten" dazu neigen, persönliche Vorlieben als absolute Wahrheit zu verkaufen (Beispiel (http://www.mrunix.de/forums/showthread.php?t=49941), bei dem mir das extrem aufgefallen ist) und da frage ich mich dann immer, welcher "Wahrheit" ich da glauben soll. Und meistens funktionieren dann in der Praxis doch eh' alle Möglichkeiten...

*topic*

Wo ist zwischen den folgenden beiden Codeausschnitten der Unterschied, den ich nicht verstehe:



[...]
\newcommand{\UMRelated}[1]{\textbf{Related Options:} \texttt{#1}}
[...]
Ganz normaler [...] und noch viel mehr Text.
\vspace{10pt}\newline\UMRelated{--option}
\subsection{Etwas anderes}
[...]


und



[...]
\newcommand{\UMRelated}[1]{\vspace{10pt}\newline\textbf{Related Options:} \texttt{#1}}
[...]
Ganz normaler [...] und noch viel mehr Text.
\UMRelated{--option}
\subsection{Etwas anderes}
[...]


Die erste Möglichkeit funktioniert und macht genau das, was ich erwarte, bei der zweiten wird die Verarbeitung mit der Fehlermeldung "There's no line here to end." abgebrochen. Die Log-Datei gibt ansonsten auch nichts her, das mir weiterhelfen würde...

Warum ist es in diesem Fall so ein gewaltiger Unterschied, ob die beiden Befehle \vspace{10pt} und \newline innerhalb des Macros oder direkt davor stehen?

So long,
Liberty

Statist
14-04-2007, 08:11
Moin,

*offtopic, wollte ich nur mal loswerden*
ich freunde mich immer mehr mit LaTeX an, das einzige, was mich im großen und ganzen manchmal stört, dass viele LaTeX-"Experten" dazu neigen, persönliche Vorlieben als absolute Wahrheit zu verkaufen (Beispiel (http://www.mrunix.de/forums/showthread.php?t=49941), bei dem mir das extrem aufgefallen ist) und da frage ich mich dann immer, welcher "Wahrheit" ich da glauben soll. Und meistens funktionieren dann in der Praxis doch eh' alle Möglichkeiten...


Ich würde sagen, das liegt daran, das häufig viele unterschiedliche Wege zum Zielen führen. Unter bestimmten Umständen sieht man keinen Unterschied und es besteht vielleicht auch kein Unterschied. Aber unter bestimmten Bedingungen liefert ein Weg dann vielleicht nur noch ein unbefriedigende Lösung, oder Fehler.

Zu Deinem anderen Problem. So etwas in der Art kenne ich auch. Erklären kann ich es aber nicht was dort schief läuft. Da müssen denke ich die Experten rann. Liegt aber glaube ich grob drann, das Du eine Zeile beenden willst, wo Latex keine Zeile hat, die beendet werden kann.

Guido

Liberty
27-04-2007, 19:48
Ich erlaube mir, dieses Thema nochmal zu pushen, denn ich möchte LaTeX wirklich verstehen und dieses Problem verstehe ich nach wie vor eindeutig nicht

//EDIT
Ok, nachdem ich mich in diesem Thread mal nach dem Unterschied zwischen \def und \newcommand erkundigt habe und der einzige Unterschied, so wie ich die Antwort von voss verstanden habe, darin besteht, dass \def gnadenlos bestehende Definition überschreibt, habe ich mal spaßeshalber den Befehl mit \def implementiert, also

\def\UMRelated#1{\vspace{10pt}\newline\textbf{Rela ted Options:} \texttt{#1}}
ausprobiert habe, wird auch der Teil "\vspace{10pt}\newline" widerspruchslos interpretiert und führt zu dem Ergebnis, das ich von Anfang an haben wollte.

Also muss es da ja doch noch andere Unterschiede zwischen \def und \newcommand geben...

Ein verwirrter Liberty bittet um Erleuchtung...

rais
27-04-2007, 20:28
Moin moin,


Wo ist zwischen den folgenden beiden Codeausschnitten der Unterschied, den ich nicht verstehe:



[...]
\newcommand{\UMRelated}[1]{\textbf{Related Options:} \texttt{#1}}
[...]
Ganz normaler [...] und noch viel mehr Text.
\vspace{10pt}\newline\UMRelated{--option}
\subsection{Etwas anderes}
[...]


und



[...]
\newcommand{\UMRelated}[1]{\vspace{10pt}\newline\textbf{Related Options:} \texttt{#1}}
[...]
Ganz normaler [...] und noch viel mehr Text.
\UMRelated{--option}
\subsection{Etwas anderes}
[...]


Die erste Möglichkeit funktioniert und macht genau das, was ich erwarte, bei der zweiten wird die Verarbeitung mit der Fehlermeldung "There's no line here to end." abgebrochen. Die Log-Datei gibt ansonsten auch nichts her, das mir weiterhelfen würde...

Warum ist es in diesem Fall so ein gewaltiger Unterschied, ob die beiden Befehle \vspace{10pt} und \newline innerhalb des Macros oder direkt davor stehen?

hast Du das _genau_ so ausprobiert? Bei mir gibt's da jedenfalls keinen Unterschied. Den Fehler kann ich zwar reproduzieren, aber dazu muss ich schon Hand anlegen, z.B. eine Leerzeile vor das entsprechende Kommando stellen (das ist dann aber auch bei beiden Varianten gleich, so im ersten Fall die Leerzeile vor dem \vspace ist bzw. im zweiten Fall vor \UMRelated (und damit eben auch vor \vspace)).
Bei

\newcommand{\UMRelated}[1]{~\vspace{10pt}\newline\textbf{Related Options:} \texttt{#1}}
sollte eine vorgestellte Leerzeile diesen Fehler nicht mehr bringen.;)
MfG,

Liberty
27-04-2007, 20:43
Moin,

das ist ja das interessante, ich schließe das funktionierende Kommando (also das mit \def) direkt an den davorstehenden normalen Text an, also z.B. (direkt aus der Datei kopiert):



\leveltwo{{-}{-}verbose}\label{UM.CLO.Verbose}
\UMUsage{--verbose}
This option enables the verbose mode. A lot of diagnostic messages are displayed on the screen which might be useful to detect errors and even smaller problems that usually would not result in any visible warning.
\UMRelated{--quiet}


Das wäre jetzt so ein typischer Block, von denen ich einige in dem zur Debatte stehenden Handbuch (\UM = User Manual :) ) habe.

Und in genau diesem Szenario musste ich, bevor ich das \UMRelated auf \def umgestellt habe, immer monoton dieses "\vspace{10pt}\newline" voranstellen um den Leerraum vor der Zeile hinzubekommen.

So long,
Liberty

P.S.:
Editor ist Kile und eingesetzte Packages in dem Dokument sind: url, longtable, fancyhdr und hyperref. Sollte mit dem Problem aber eigentlich nichts zu tun haben...

rais
27-04-2007, 23:02
Moin moin,

Moin,

das ist ja das interessante, ich schließe das funktionierende Kommando (also das mit \def) direkt an den davorstehenden normalen Text an, also z.B. (direkt aus der Datei kopiert):



\leveltwo{{-}{-}verbose}\label{UM.CLO.Verbose}
\UMUsage{--verbose}
This option enables the verbose mode. A lot of diagnostic messages are displayed on the screen which might be useful to detect errors and even smaller problems that usually would not result in any visible warning.
\UMRelated{--quiet}


Das wäre jetzt so ein typischer Block, von denen ich einige in dem zur Debatte stehenden Handbuch (\UM = User Manual :) ) habe.

Und in genau diesem Szenario musste ich, bevor ich das \UMRelated auf \def umgestellt habe, immer monoton dieses "\vspace{10pt}\newline" voranstellen um den Leerraum vor der Zeile hinzubekommen.

So long,
Liberty

P.S.:
Editor ist Kile und eingesetzte Packages in dem Dokument sind: url, longtable, fancyhdr und hyperref. Sollte mit dem Problem aber eigentlich nichts zu tun haben...


\documentclass{article}
\newcommand{\UMRelatedN}[1]{\vspace{10pt}\newline\textbf{Related Options:} \texttt{#1}}
\def\UMRelatedD#1{\vspace{10pt}\newline\textbf{Rel ated Options:} \texttt{#1}}
\newcommand{\UMRelatedNVS}[1]{\textbf{Related Options:} \texttt{#1}}
\begin{document}
%\leveltwo{{-}{-}verbose}\label{UM.CLO.Verbose}
%\UMUsage{--verbose}
This option enables the verbose mode. A lot of diagnostic messages are displayed on the screen which might be useful to detect errors and even smaller problems that usually would not result in any visible warning.
%\vspace{10pt}\newline\UMRelatedNVS{--quiet}
\UMRelatedN{--quiet}
%\UMRelatedD{--quiet}
\end{document}

egal, welche der drei Zeilen ich stehen lasse, die mit \UMRelatedNVS (`NVS´ wie ``no vertical space´´), \UMSRelatedN (`N´ wie ``per \newcommand´) oder \UMRelatedD (`D´ wie ``per \def´´) und die anderen beiden entsprechend auskommentiere: das Resultat ist identisch -- es läuft fehlerfrei durch.
Wenn ich eine Leerzeile an ``(..) warning.´´ anschließe, dann gibt es bei allen drei Varianten eine entsprechende ``there is no line here to end´´ Fehlermeldung, deshalb vllt nochmal die Frage: Was hast Du anders gemacht?

PS) Editor: kate -- schlicht ASCII halt :), OpenSuSE 10.1 / teTeX3
MfG,