AnfängerProblem tex-->Pdf

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: AnfängerProblem tex-->Pdf

von KOMA » Di 7. Apr 2009, 08:59

Ergänzend möchte ich »Das LaTeX2e-Sündenregister« empfehlen. Wenn nämlich der Rest der Vorlage des Kumpels genauso schrecklich ist, wie das gezeigte Codestück, dann ist es dringend geboten, diese zu entrümpeln. Ich würde ja fast dazu neigen, die Vorlage (zumindest deren Präambel) einfach wegzuwerfen und ein neues Dokument von 0 aufzubauen. Da sind dann wenigstens nur die Pakete und Definitionen drin, die wirklich benötigt werden.

Mehr als die Hälfte der Vorlagen, die so herumgeistern, sind leider Vorlagen für unwissentlich eingehandelte Probleme. Schönes Beispiel ist der PDF-Testcode, den man leider noch immer sehr häufig sieht, obwohl er nicht nur unbrauchbar, sondern ggf. sogar schädlich ist. Ich werde den deshalb mal ausführlich kommentieren:
% ACHTUNG: DAS HIER KEINESFALLS MACHEN!
\newif\ifpdf
Es wird eine neue Verzweigung deklariert. Voreingestellt ist \ifpdf mit \iffalse. Verwendet wird diese Verzweigung in der Form: \ifpdf wenn \ifpdf \iftrue ist, verwende das hier \else wenn \ifpdf \iffalse ist, verwende das hier \fi.
\ifx\pdfoutput\undefined
Das bedeutet: Wenn die Anweisung \pdfoutput in der gleichen Weise wie die Anweisung \undefined expandiert, dann führe aus. \pdfoutput ist eine Anweisung, die nur bei pdfTeX existiert. Bei pdfTeX gibt sie an, ob die Ausgabe als DVI (\pdfputput=0) oder PDF (\pdfoutput=1) erfolgen soll. Nun verwenden alle modernen TeX-Systeme pdfTeX nicht nur für pdflatex, also für die PDF-Ausgabe, sondern auch für latex, also die DVI-Ausgabe. Demnach ist \pdfoutput bei modernen Systemen immer definiert und deshalb wird:
\pdffalse
nie ausgeführt. Die Anweisung hätte man sich ohnehin sparen können, weil sie lediglich \ifpdf zu \iffalse macht, was ja der Voreinstellung entspricht. Jetzt kommt aber
\else
Das bedeutet: Wenn die vorherige Bedingung nicht erfüllt ist, also \pdfoutput nicht in gleicher Weise wie \undefined expandiert, dann führe aus. Wie wir bereits wissen ist \pdfoutput definiert. Wenn also nicht gerade ungeschickter Weise \undefined auf \pdfoutput gesetzt ist, dann wird immer dieser Teil ausgeführt.
\pdfoutput=1
Es wird also immer auf PDF-Ausgabe umgeschaltet
\pdftrue
\fi
und immer \ifpdf zu \iftrue.

Letztlich führt der Code also dazu, dass auch beim Aufruf von latex (statt pdflatex) keine DVI-Ausgabe, sondern eine PDF-Ausgabe erzeugt wird. Dabei wird auch noch der Nachteil in Kauf genommen, dass ggf. zuvor geladene Pakete und die Klasse das überhaupt nicht mitbekommen. Wenn man schon \pdfoutput ändert, sollte man das nämlich ganz am Anfang noch vor dem Laden der Klasse machen. Man kann diesen Code also bestenfalls als sehr ungeschickt bezeichnen. Tatsächlich ist es schon fahrlässig so etwas weiterzugeben.

KOMA-Script bietet seit Jahren für die Fallunterscheidung, ob PDF-Output erfolgen soll oder nicht, die Anweisung \ifpdfoutput (siehe KOMA-Script-Anleitung). Desweiteren gibt es mit ifpdf ein Paket, das einen vernünftigen pdfTeX-Test mit anschließend brauchbarem \ifpdf bietet.

Wie Stefan schon erklärt hat, benötigt man die ganze Fallunterscheidung für das Laden von Paketen wie graphics, graphicx, color, xcolor oder hyperref aber ohnehin nicht, weil diese nicht nur pdfTeX und dessen aktuellen Ausgabemodus, sondern auch VTeX und dessen Ausgabemodi in der Regel selbst erkennen.

\ifpdf

von Stefan Kottwitz » Mo 6. Apr 2009, 16:29

Hallo Hannes,

willkommen im Forum! Was passiert denn, wenn Du statt diesem Code nur dies schreibst?
\usepackage{graphicx}
\usepackage{hyperref}
Die Pakete sind selbst in der Lage, zu erkennen, ob pdflatex verwendet wird.

Übrigens kannst Du für eigene Fragen ruhig jeweils ein eigenes Thema (im entsprechenden Unterforum) eröffnen, statt ein anderes weiterzuführen. Deine Frage passt nämlich gar nicht zu diesem Thema.

Viele Grüße,

Stefan

Anfängerproblem \ifpdf

von hannes1239 » Mo 6. Apr 2009, 15:12

Hallo
Ich bin auch Latex Anfänger und hab gleich zu beginn ein kleines Problem.

Ich hab von einem Kumpel eine Vorlage bekommen. Wenn ich nur diese Vorlage kompiliere bekomme ich eine Fehlermeldung:

Vorlage:
\newif
\ifpdf
\ifx\pdfoutput\undefined
\pdffalse
\else
\pdfoutput=1
\pdftrue
\fi

\ifpdf
\usepackage[pdftex]{graphicx}
\usepackage[pdftex]{hyperref}
\else
\usepackage{graphicx}
\usepackage{hyperref}
\fi


und Fehlermeldung:

Package ifpdf error: Name clash, \ifpdf is already defined



Gruß

von oliverinspace » Di 3. Feb 2009, 11:36

Da bin ich voll und ganz deiner Meinung. Deshalb hab ich in meinem MikTex auch die Zeilennummern eingeschaltet
EXTRAS -> Optionen -> Editor -> Zeilennummern anzeigen

falls es jemand auch sucht , aber nicht sofort findet.

von Pu1144936 » Di 3. Feb 2009, 08:26

Hi!
Namukwaya hat geschrieben:Danke oliverinspace!
Ich bin das Dokument nun nochmal durchgegangen und anscheinend den Fehler gefungen :D
Manchmal hilft's, dass der Compiler die Zeile auswirft, wo er hängt. In Deinem Fall müsste das die 57 gewesen sein. Leider ist's nicht immer da, aber meist bekommt man dann einen kleinen Anhaltspunkt, woran es hängen könnte...

Grüße,

ch

von Namukwaya » Di 3. Feb 2009, 02:06

Danke oliverinspace!
Ich bin das Dokument nun nochmal durchgegangen und anscheinend den Fehler gefungen :D
Ich hatte nicht ein $ zu wenig, sondern wie es aussieht einen einsamen \ zuviel. Ich wusste nicht dass das so viel ausmacht, aber ist klar,wenn kein Befehl nach dem \ kommt, kann einen das schon verwirren.
Auf alle Fälle vielen Dank für die schnelle Hilfe!
Lg

von oliverinspace » Mo 2. Feb 2009, 23:21

schreib mal ein minimalbeispiel dass für deinen Fall zutrifft.
Es wäre möglich (aber nicht immer gerne gesehen) dass du dein beispiel einfach hier postest. vllt fehlt irgendwo ein $ am Ende von einer Formel.
oder vllt ist es ein ganz anderes problem.

am besten du lässt uns ein bisschen in deinen Code sehen.

AnfängerProblem tex-->Pdf

von Namukwaya » Mo 2. Feb 2009, 22:05

Hallo,
ich bin blutiger Anfänger bei LaTex und hab ein wahrscheinlich total dummes Problem. Wäre aber trotzdem dankbar wenn mir jemand einen Tipp geben kann.

Also Folgendes:
Wenn ich mein Dokument in Pdf umwandle, sehe ich nur die erste Seite, der Rest meines Dokumentes fehlt.

In der Eingabeaufforderung steht:
Vorher das übliche und dann:
<C:\texmf\tex\latex\german\ngerman.sty v2.5e 1998-07-08> <DA2.aux> [1{psfonts.map}]
! Missing $ inserted.
<inserted text>
$
1.57
?

Und nun hab ich keine Ahnung was ich falsch gemacht habe
:?
Weiss jemand weiter?
Lg

Nach oben