Ich hab Windows 8.1. Folgendes habe ich bisher gemacht:

  1. Eine HOME Systemvariable erstellt
  2. den Pfad C:\Program Files\gs\gs9.19\bin in meine PATH Variable hinzugefügt
  3. Emacs runtergeladen, extrahiert und auctex in das gleiche verzeichnis ebenfalls extrahiert.
  4. Dann habe ich im C: Laufwerk eine .emacs Datei, in der Folgendes steht:

    (add-hook 'LaTeX-mode-hook 'turn-on-reftex)  
    (autoload 'LaTeX-preview-setup "preview")  
    (setq reftex-plug-into-AUCTeX t)  
    (setq preview-gs-command  
    (executable-find "gswin64c.exe"))
    Das ist aus diversen Anleitungen zusammengetragen, in der Hoffnung, dass es irgendwann funktioniert.

  5. Ich hab dann in emacs auctex eingebunden (install package).

Damit habe ich auch meine Menüleiste mit "Preview, Latex und Ref" wie gewünscht erhalten. Wenn ich jetzt allerdings eine Preview erstelle (ich hab es bisher hauptsächlich mit Generate Previews for buffer probiert, aber auch die anderen klappen nicht), dann erhalte ich immer die Fehlermeldung: "Wrong type argument: arraynp, nil."

Jedenfalls bei meiner Beispiel-LaTeX-Anleitungs Datei aus dem Netz.

Wenn ich das Ganze auf

Open in Online-Editor
\begin{document}  
$x=2$  
\end{document}

anwende, dann erhalte ich den Fehler "LateX found no preview images".

Könnt ihr mir erklären, wie diese Fehler zustande kommen?

gefragt 04 Aug '16, 15:23

Nymphadora's gravatar image

Nymphadora
2112
Akzeptiert-Rate: 0%

bearbeitet 04 Aug '16, 18:02

saputello's gravatar image

saputello
11.1k154365

Willkommen auf TeXwelt.

Bitte beachte, dass wir hier Markdown-Syntax verwenden. Ich habe das u. a. für die Aufzählung mal gemacht. Lediglich den Code innerhalb der Aufzählung habe ich nicht per Markdown markiert, weil dabei sonst die Formatierung der Liste gestört wird und das auch kein LaTeX, sondern Lisp-Code ist. Ob man das trotzdem als Blockcode markieren sollte, ist letztlich Auslegungssache.

(04 Aug '16, 16:03) saputello

Die Fehlermeldung "LaTeX found no preview images" gibt es (auch unter Linux) dann, wenn kein Preview erstellt werden kann. Das ist beispielsweise dann der Fall, wenn in der Dokumentpräambel Fehler enthalten sind oder diese wie in Deinem Fall komplett fehlt. Preview gibt es also nur dann, wenn die Präambel existiert, fehlerfrei ist und auch der Bereich für den ein Preview erstellt werden soll, korrekt verarbeitet werden kann.

Preview für das vollständige Dokument:

Open in Online-Editor
\documentclass{article}
\begin{document}  
$x=2$  
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:

beispielsweise erzeugt mit C-c C-p C-d, ergibt bei mir (unter Linux):

emacs mit preview

und wenn man den Cursor in den Bereich des Previews bewegt:

emacs mit preview, cursor im Bereich

Nett ist auch das Preview für:

Open in Online-Editor
\documentclass{article}
\usepackage{graphicx}
\begin{document}  
$x=2$

\begin{figure}
  \includegraphics{example-image}
  \caption{Testabbildung}
\end{figure}
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:

Mit Bild


Die zweite Fehlermeldung: "Wrong type argument: arraynp, nil.", deutet darauf hin, dass an eine Lisp-Funktion, ein nil-Pointer als Argument übergeben wurde, die zwingend ein anderes Argument, beispielsweise einen String erwartet. Das kann verschiedene Ursachen haben. An welcher Stelle das geschieht, erfährt man üblicherweise aus der Ausgabe der Preview-Erstellung (zu erreichen mit C-c C-l') unmittelbar nach dem Versuch ein Preview zu erstellen. Im Idealfall sieht diese so ähnlich aus wie:

Running `Preview-LaTeX' on `test' with ``pdflatex -ini -interaction=nonstopmode "&pdflatex"
prv_test.ini  "\nonstopmode\nofiles\PassOptionsToPackage{active,tightpage,auctex}{preview}\AtBeginDocument{\ifx\ifPreview\undefined\RequirePackage[displaymath,floats,graphics,textmath,sections,footnotes]{preview}[2004/11/05]\fi}" "\input" test.tex''
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) (INITEX)
 restricted \write18 enabled.
entering extended mode
(./prv_test.ini
LaTeX2e <2016/03/31> patch level 3
Babel <3.9r> and hyphenation patterns for 83 language(s) loaded.
(/usr/local/texlive/2016/texmf-dist/tex/latex/carlisle/mylatex.ltx)
(/usr/local/texlive/2016/texmf-dist/tex/latex/tools/.tex File ignored))
No auxiliary output files.
…
TeX Output finished at Thu Aug  4 16:59:14
Running `Preview-LaTeX' on `test' with ``pdflatex -interaction=nonstopmode "&prv_test" test.tex''
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./test.tex
…
Output written on test.pdf (1 page, 16081 bytes).
Transcript written on test.log.

TeX Output exited as expected with code 1 at Thu Aug  4 16:59:15
Running `Preview-PDF2DSC' with ``pdf2dsc test.pdf test.prv/tmp29401gOW/preview.dsc''

Preview-PDF2DSC finished at Thu Aug  4 16:59:15
Running `Preview-Ghostscript' with ``/usr/local/texlive/current/bin/x86_64-linux/rungs -dOutputFile\=\(test.prv/tmp29401gOW/pr1-\%d.png\) -q -dDELAYSAFER -dNOPAUSE -DNOPLATFONTS -dPrinted -dTextAlphaBits\=4 -dGraphicsAlphaBits\=4 -sDEVICE\=png16m -r86.6987x86.4851''

Preview-Ghostscript finished at Thu Aug  4 16:59:15

Ich habe die Ausgabe an den mit markierten Stellen gekürzt.

Ein Fehler könnte dabei beispielsweise sein, dass preview-gs-command nicht korrekt gesetzt, sondern nil ist, beispielsweise weil das angegebene Ghostscript-Binary nicht gefunden wurde. In diesem Fall könnte der Aufruf von Preview-Ghostscript nicht stattfinden. Um das zu überprüfen, kann man sich die Variable anzeigen lassen M-x describe-variable ENTER preview-gs-command ENTER. Das sollte etwas ausgeben wie:

preview-gs-command is a variable defined in `preview.el'.
Its value is "/usr/local/texlive/current/bin/x86_64-linux/rungs"
 
  This variable may be risky if used as a file-local variable.
 
Documentation:
*How to call gs for conversion from EPS.  See also `preview-gs-options'.
 
You can customize this variable.

Ist als Wert hingegen nil angegeben, so wurde preview-gs-command nicht korrekt gesetzt bzw. die Suche nach dem Binary schlug fehl.

Übrigens ist in preview.el bereits eine Suche nach GSWIN32C.EXE enthalten, so dass die Zeile

(setq preview-gs-command (executable-find "gswin64c.exe"))
in .emacs nur gesetzt werden sollte, wenn tatsächlich das 64bit-Binary gswin64c.exe und nicht das 32bit-Binary gswin32c.exe vorhanden ist. Falls noch gar kein Ghostscript installiert ist, sollte das nachgeholt und dann das passende Binary eingetragen werden. Falls Ghostscript nicht via PATH gefunden werden kann, muss entweder PATH entsprechend erweitert werden oder statt (executable-find "gswin64c.exe") muss direkt der komplette Pfade auf das Ghostscript-Binary in Anführungszeichen angegeben werden, beispielsweise:

(setq preview-gs-command "C:/Program Files/gs/gs9.19/bin/gswin64c.exe")
Permanenter link

beantwortet 04 Aug '16, 15:58

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 06 Aug '16, 16:23

Hey saputello,

Vielen Dank! das erklärt das problem mit dem unteren Text. Leider erhalte ich keine Preview sondern dann auch die Fehlermeldung "Wrong type argument: arrayp, nil". Weißt du, was dahinter stecken könnte?

(04 Aug '16, 16:31) Nymphadora

Also du meinst Debugger on error? (sorry ich bin neu in dem Programm). Dann erhalte ich das:

Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
signal(wrong-type-argument (arrayp nil))
preview-reraise-error(#)
preview-pdf2dsc-sentinel(# "Preview-PDF2DSC" t)
(lambda (process command) (preview-pdf2dsc-sentinel process command t))(# "Preview-PDF2DSC")
TeX-command-sentinel(# "finishedn")

(04 Aug '16, 16:48) Nymphadora

Also, ich hab das ganze immer in einer geöffneten Tex-Datei gemacht, weil ich mir das schon gedacht habe.

Ghostskript ist bei mir installiert, jedenfalls liegt unter C:Program Filesgsgs9.19bin eine Datei mit dem Namen gswin64.exe ;-)

Die andere von dir angesprochene Variable hat den von dir vermuteten Wert.

(04 Aug '16, 17:38) Nymphadora

@Nymphadora: gswin64.exe ist aber nicht gswin64c.exe. Normalerweise ist gswin64.exe die Version von Ghostscript, die ein eigenes Fenster öffnet. Du brauchst die Kommandozeilenversion gswin64c.exe. Damit die Suche mit executable-find funktioniert, muss es außerdem via PATH zu finden sein. Du kannst versuchsweise einmal stattdessen den Pfad direkt angeben. (Bitte achte auch auf korrektes Markdown in Kommentaren, sonst fehlen die ganzen Backslash!)

(04 Aug '16, 17:48) saputello

oh Entschuldige, gswin64c.exe liegt ihm gleichen Pfad. Den habe ich auch in der Umgebungsvariable Path angegeben (allerdings nur den Ordner, muss ich da auch die Datei schon angeben?).

(Ja, ich versuche es, muss mich da erst noch etwas reinfuchsen)

(04 Aug '16, 17:50) Nymphadora

@Nymphadora: Nur den Binary-Ordner. Und natürlich darfst Du PATH nur erweitern nicht komplett neu setzen, sonst werden eventuell andere Binaries nicht mehr gefunden.

Probier einmal in .emacs wie am Ende der Antwort gezeigt, preview-gs-command direkt auf den kompletten Pfad des Binaries zu setzen. Falls das funktioniert, ist PATH nicht korrekt gesetzt. Eventuell hast Du dort Anführungszeichen vergessen. Lass zur Kontrolle in der Eingabeaufforderung mit »ECHO %PATH%« oder besser »echo %path:;=&echo.%« den aktuellen Wert von PATH ausgeben.

(04 Aug '16, 18:00) saputello

Ja, das wusste ich, hab es mit Semikolon dahinter gesetzt :) Ich probiere das morgen aus, für heute reicht es mit Uni ;-) vielen, vielen Dank!

(04 Aug '16, 18:26) Nymphadora
Ergebnis 5 von 7 show 2 more comments
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×127
×43
×9
×5
×1

gestellte Frage: 04 Aug '16, 15:23

Frage wurde gesehen: 8,663 Mal

zuletzt geändert: 06 Aug '16, 16:23