{"id":312,"date":"2014-09-02T18:37:46","date_gmt":"2014-09-02T16:37:46","guid":{"rendered":"http:\/\/blog.kivitendo-premium.de\/?p=312"},"modified":"2014-09-02T18:38:18","modified_gmt":"2014-09-02T16:38:18","slug":"fehlermeldungen-in-latex","status":"publish","type":"post","link":"https:\/\/blog.kivitendo.de\/?p=312","title":{"rendered":"Fehlermeldungen in LaTeX"},"content":{"rendered":"<p>Da ich auf der FrOSCon nicht dazu gekommen bin, mir einen der Vortr\u00e4ge anzuschauen, habe ich heute mal in eine der Aufzeichnungen hineingeschaut, <a href=\"http:\/\/media.ccc.de\/browse\/conferences\/froscon\/2014\/froscon2014_-_1328_-_de_-_hs4_-_201408241400_-_programmierung_mit_latex_-_wolfgang_dautermann.html\" title=\"Programmierung mit LaTeX\" target=\"_blank\">Programmierung mit LaTeX<\/a><\/p>\n<p>Fast nebenbei wird dort der \\typeout Befehl erw\u00e4hnt, mit dem man w\u00e4hrend des Kompilierens Ausgaben f\u00fcr den Benutzer erzeugen kann, und sich das damit auch zum Debuggen eignet.<\/p>\n<p>Ein typischer Fehlerfall von kivitendo sind Sonderzeichen z.B. im Langtext von Artikeln, die durch Copy&#038;Paste aus anderen Quellen, z.B. PDFs, eingef\u00fcgt werden, und von LaTeX nicht verarbeitet werden k\u00f6nnen. Der Benutzer bekommt dann den Inhalt der .err-Datei angezeigt, kann damit in der Regel aber nicht viel anfangen, weil das betreffende Zeichen meist entstellt angezeigt wird und meist der Kontext fehlt.<\/p>\n<p>Beispiel: ich f\u00fcge die Zeichen \u9999\u6e2f in den Langtext von Position 2 ein, und erhalte:<br \/>\n<code><br \/>\n! Package inputenc Error: Unicode char \\u8:\u00e9\u00a6\u0099 not set up for use with LaTeX.<br \/>\nl.188 & & \\newline \u00e9\u00a6\u0099<br \/>\n\u00e6\u00b8\u00af \\\\<br \/>\n<\/code><\/p>\n<p>Der Benutzer hat keine Ahnung, um welches Zeichen es sich handelt und wo im Dokument es sich befindet, kann entweder durch raten oder gezieltes L\u00f6schen die Fehlerursache suchen, oder mu\u00df seinen Admin\/Dienstleister anrufen.<\/p>\n<p>Mit dem \\typeout Befehl kann man aber z.B. in der Artikelschleife bei jeder Position kurz ausgeben, welche Artikelposition gerade ausgegeben wird, so da\u00df man im Falle des Abbruchs zumindest schon mal sehen kann, bei welchem Artikel das Sonderzeichen ist.<br \/>\n<code><br \/>\n<%foreach number%><br \/>\n\\typeout{Position <%runningnumber%> (Artikelnr <%number%>)}<br \/>\n<\/code><\/p>\n<p>In der .err-Datei, und damit an der Browserobefl\u00e4che, taucht das dann folgenderma\u00dfen auf:<br \/>\n<code><br \/>\nPosition 1 (Artikelnr 1)<br \/>\nPosition 2 (Artikelnr 1)<\/p>\n<p>! Package inputenc Error: Unicode char \\u8:\u00e9\u00a6\u0099 not set up for use with LaTeX.<br \/>\n<\/code><\/p>\n<p>Jetzt wei\u00df man zumindest schon mal, da\u00df das kaputte Zeichen bei Position 2 liegt.<\/p>\n<p>Das Gleiche k\u00f6nnte man auch f\u00fcr andere Eingabefelder, wie z.B. Transportmittel, machen.<\/p>\n<p>Bei der Gelegenheit habe ich mich dann auch gewundert, warum mein \u9999\u6e2f eigentlich im Browser nicht richtig angezeigt wird, auf der Kommandozeile wurde das in der .err-Datei n\u00e4mlich sch\u00f6n angezeigt. In der entsprechenden Codestelle (SL\/Form.pm, sub cleanup) wurde die .err Datei nicht mit UTF-8 Encoding eingelesen, baut man das ein<br \/>\n<code><br \/>\n } elsif (-f \"$self->{tmpfile}.err\") {<br \/>\n   open(FH, \"<:encoding(UTF-8)\", \"$self->{tmpfile}.err\");<br \/>\n <\/code><br \/>\nwird dann auch an der Oberfl\u00e4che mein fehlerhaftes Zeichen korrekt angezeigt:<br \/>\n<code><br \/>\nPosition 1 (Artikelnr 1)<br \/>\nPosition 2 (Artikelnr 1)<\/p>\n<p>! Package inputenc Error: Unicode char \\u8:\u9999 not set up for use with LaTeX.<br \/>\n<\/code><\/p>\n<p>F\u00fcr Unicode Zeichen hilft das dann zumindest schon mal.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Da ich auf der FrOSCon nicht dazu gekommen bin, mir einen der Vortr\u00e4ge anzuschauen, habe ich heute mal in eine der Aufzeichnungen hineingeschaut, Programmierung mit LaTeX Fast nebenbei wird dort der \\typeout Befehl erw\u00e4hnt, mit dem man w\u00e4hrend des Kompilierens Ausgaben f\u00fcr den Benutzer erzeugen kann, und sich das damit auch zum Debuggen eignet. Ein [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,23],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.kivitendo.de\/index.php?rest_route=\/wp\/v2\/posts\/312"}],"collection":[{"href":"https:\/\/blog.kivitendo.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kivitendo.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kivitendo.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kivitendo.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=312"}],"version-history":[{"count":7,"href":"https:\/\/blog.kivitendo.de\/index.php?rest_route=\/wp\/v2\/posts\/312\/revisions"}],"predecessor-version":[{"id":319,"href":"https:\/\/blog.kivitendo.de\/index.php?rest_route=\/wp\/v2\/posts\/312\/revisions\/319"}],"wp:attachment":[{"href":"https:\/\/blog.kivitendo.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kivitendo.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kivitendo.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}