Posts Tagged ‘Latex’

Mittwoch, 18. Dezember 2013

Schwer zu eruierende LaTeX-Kompilationsfehler debuggen

Kürzlich konnte ich ein Dokument eines aktuellen LaTeX-Projektes nicht mehr kompilieren. pdflatex brach immer mit der folgenden Fehlermeldung ab:

...
! Missing \endcsname inserted.
 
\protect 
l.75 \printbibliography[heading=none]
...

Welcher der über 300 Einträge in der Bibliographie verursachte das Problem? Erst das manuelle Eingrenzen durch radikales Löschen (natürlich mit Sicherheitskopie der .bib-Datei) von Bibliographie-Einträgen brachte schlussendlich den verantwortlichen Eintrag zu Tage: Auf Grund der Overfull \hbox-Meldungen in der Log-Datei wusste ich, zwischen welchen zwei Einträgen das Problem bestand, nicht aber, welcher der circa 30 Einträge effektiv das Problem war. Nach der Löschaktion war der Eintrag isoliert. Meine Analyse ergab, dass ich in JabRef in das Feld Language den Wert Französisch eingetragen hatte, welches beim Abspeichern der Bibliographie zu Franz{\“o}sisch wird. Offenbar mag das Paket biblatex solche Sonderzeichen in diesem Feld gar nicht und bricht stumm ab …

Tags: , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 24. Oktober 2013

biber findet die Datenquelle nicht mehr

Kürzlich war ich auf einem Windows-Laptop mit folgendem Problem konfrontiert:

data source C:\Users\mario\AppData\Local\Temp\par-476f6e7a616c6f\cache-63038a22a6dc2bcfc65352f2f3a3448ce3f3ab68\recode_data.xml not found in.

Bei biber handelt es sich nicht um das Tier, sondern um ein Hilfstool aus dem LaTeX-Universum zur Verarbeitung von BibTeX Bibliographiedatenbanken.

Zuerst machte ich Microsoft und die kürzlich von mir aktivierten Offline-Dateien verantwortlich. Schlussendlich musste ich aber realisieren, dass das Problem rein von biber selbst zu stammen scheint. Nachdem ich den Ordner C:\Users\mario\AppData\Local\Temp\par-476f6e7a616c6f\ gelöscht hatte, lief auch biber wieder ohne Probleme durch.

Via: biber first aid for “data source not found”

Tags: , , , ,
Labels: Wissenschaft

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 31. Juli 2011

TeX Live 2011 sucks

Da wollte ich also gestern schnell mal TeX Live 2011 auf dem Windows-Laptop meiner Freundin installieren, scheiterte schlussendlich aber kläglich …

Zuerst habe ich mir install-tl.zip für Windows heruntergeladen, entpackt und danach die Datei install-tl.bat gestartet. Die Installation lief durch, hing aber schlussendlich bei „Finished downloading“. Erst viel später merkte ich, dass im Hintergrund ein Kommandozeilenfenster geöffnet war und irgendwas von mir wollte.

Der zweite Installationsversuch klappte ebenfalls nicht, obwohl alle erneut Pakete heruntergeladen werden mussten (!). Die Einträge im Startmenu fehlten.

Als ich deshalb den Installer unter C:\texlive\2011\ erneut ausführen wollte (ein zweiter Durchlauf kann nie schaden), erschien folgende Fehlermeldung:

Cannot open 'C:/texlive/2011/tlpkg/installer/texlive.png' in mode 'r' at C:\texlive\2011\tlpkg\tlperl\lib/Tk/Image.pm line 21.

Nach etwas pröbeln kopierte ich kurzerhand den von der Web-Site heruntergeladenen install-Ordner unter ~/Downloads über den Ordner in C:/texlive/2011/tlpkg/installer/. Damit die Pakete dabei aber nicht erneut heruntergeladen werden mussten, startete ich den Installer von der Kommandozeile mit

install-tl.bat -in-place

Die Installation lief nun das erste Mal richtig durch, indem TeX Live auch klar sichtbar konfiguriert wurde. Der Ordner im Startmenu tauchte aber auch hier nicht auf.

Unter C:\texlive\2011\ fand ich eine Taskbar-Applikation, welche mir so Zugriff auf TeXWorks verschaffte. Die Kompilierung einer Beispieldatei schlug grandios fehl, die Fehlermeldung lautete:

kpathsea: Running mktextex latex.ini
 Running: pdftex --ini --jobname=latex --progname=latex
-translate-file=cp227.tcx
*latex.ini  *latex.ini

 (Press Enter to retry, or Control-Z to exit)
 Please type another input file name:
 ! Emergency stop.
 <*> *latex.ini

 No pages of output.
 Transcript written on latex.log.

Offenbar ist dieses Problem im Netz nicht sonderlich bekannt, eine Google-Suche lieferte nur bruchstückhafte Hinweise auf die Ursache (und Lösung) des Problems.

Indem ich

fmtutil --missing

ausführte, erhielt ich die Fehlermeldung präsentiert, dass mangels .ini-Dateien 37 Format-Dateien nicht hätten erstellt werden können. Eine Beispielsuche nach latex.ini zeigte mir, dass die Datei unter C:\texlive\2011\ vorhanden war — doch wieso fand sie fmtutil nicht?!

Über Mailinglistenkommentare führte ich folgenden Befehl aus, welcher aber ohne Output hängen blieb:

tlmgr generate --rebuild-sys language

Die Anpassung auf

tlmgr generate language

lief zwar durch, brachte aber keine Besserung.

Lösungsansätze

Die Ursache allen Übels scheint zu sein, dass folgender Befehl nichts zurückgibt:

kpsewhich latex.ini

Im Mailinglisten-Thread [tex-live] Error : „I can’t find the format file `latex.fmt‘! sind die Fehlermeldungen besprochen, obwohl die Ursache hier eine andere zu sein scheint.

Hellhörig macht mich nur:

Normally the TEX… variables are not set in the shell but by
loading texmf.cnf in the tex-related programs.
You should use kpathsea debugging to see what is really
going on.

Ein anderer Ansatz könnte folgende Unterlassung sein:

Administrator privileges on Vista and Windows 7: even when running as administrator, if you want to install for all users, right-click install-tl.bat and select ‘Run as administrator’. The same is needed when running tlmgr (TeX Live Package Manager).

Quelle: TeX Live Windows installation

Tags: , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 5. Dezember 2010

Nur mal schnell mein Lizentiat mit SVN branchen …

Da ich mich langsam aber sicher daran machen sollte, meine im Herbst 2009 abgeschlossene Lizentiatsarbeit zu publizieren, nahm ich mir vor einigen Tagen vor, die über SVN versionierten LaTeX-Dateien zu branchen. Dies ist nötig, weil ich für die Publikation deutlich andere Anforderungen an das Format der Arbeit habe als beim Lizentiat.

Aus dem im theoretisch einminütigen Vorgang mit svn copy wurde dann aber leider ein mehrstündiger Installations- und Debuggingmarathon. Etwas, dass in der IT leider viel zu oft vorkommt.

subversion: Versuch 1

Was war geschehen? Zuerst einmal sprach mein unter Mac OS X installierter SVN-Client in der Version 1.4 nicht mehr mit dem mittlerweile auf 1.6 aktualisierten SVN-Server, der unter Debian GNU/Linux installiert ist.

Ein

sudo port install subversion

ging aber fürchterlich schief:

--->  Computing dependencies for subversion
--->  Fetching apr
--->  Attempting to fetch apr-1.3.8.tar.bz2 from http://apache.mirroring.de/apr
--->  Attempting to fetch apr-1.3.8.tar.bz2 from http://www.mirrorservice.org/sites/ftp.apache.org/apr
--->  Attempting to fetch apr-1.3.8.tar.bz2 from http://apache.multidist.com/apr
--->  Attempting to fetch apr-1.3.8.tar.bz2 from http://arn.se.distfiles.macports.org/apr
--->  Attempting to fetch apr-1.3.8.tar.bz2 from http://apache.mirror.rafal.ca/apr
--->  Attempting to fetch apr-1.3.8.tar.bz2 from http://www.ibiblio.org/pub/mirrors/apache/apr
--->  Attempting to fetch apr-1.3.8.tar.bz2 from http://archive.apache.org/dist/apr
--->  Verifying checksum(s) for apr
--->  Extracting apr
--->  Configuring apr
Error: Target org.macports.configure returned: configure failure: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_apr/work/apr-1.3.8" && ./configure --prefix=/opt/local --with-installbuilddir=/opt/local/share/apr-1/build " returned error 77
Command output: checking build system type... powerpc-apple-darwin9.8.0
checking host system type... powerpc-apple-darwin9.8.0
checking target system type... powerpc-apple-darwin9.8.0
Configuring APR library
Platform: powerpc-apple-darwin9.8.0
checking for working mkdir -p... yes
APR Version: 1.3.8
checking for chosen layout... apr
checking for gcc... /usr/bin/gcc-4.0
checking for C compiler default output file name... 
configure: error: in `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_apr/work/apr-1.3.8':
configure: error: C compiler cannot create executables
See `config.log' for more details.

Error: The following dependencies failed to build: apr apr-util db46 sqlite3 readline cyrus-sasl2 openssl neon serf
Error: Status 1 encountered during processing.

XCode

Das Problem war rasch gefunden: Da ich meinen PowerMac G5 vor einigen Wochen von Max OS X 10.4 (Tiger) auf 10.5 (Leopard) aktualisiert hatte, gab es ein Problem mit dem C-Compiler. In Foren wurde empfohlen, XCode auf die neueste Version zu bringen. Ich hatte 2.5 installiert, doch aktuell ist Version 3.

Da ich eine Download-Orgie von Apples ADC-Server verhindern wollte, suchte ich in meinem Software-Ordner nach Installationsmedien für Mac OS X 10.5 — und fand diese tatsächlich. Im Ordner „Optional Installs“ lag dann auch prompt XCode 3 bereit.

subversion: Versuch 2

Nach einer einstündigen Installation von XCode war der Compiler ready. MacPorts stoppte aber beim erneuten

sudo port install subversion

mit einer anderen Fehlermeldung:

--->  Verifying checksum(s) for db46
Error: Checksum (md5) mismatch for patch.4.6.21.1
Error: Checksum (md5) mismatch for patch.4.6.21.2
Error: Checksum (md5) mismatch for patch.4.6.21.3
Error: Checksum (md5) mismatch for patch.4.6.21.4
Error: Target org.macports.checksum returned: Unable to verify file checksums
Log for db46 is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_databases_db46/main.log
Error: The following dependencies failed to build: ...
Error: Status 1 encountered during processing.

Der Fehler ist im Netz bekannt. Zu seiner Behebung wurde empfohlen:

If you’re in a terrible rush, then you can do the following:

  1. run port install db46 (which is going to fail)
  2. change dir to where the port command downloaded the stuff (mine is /opt/local/var/macports/distfiles/db4/4.6.21_6)
  3. remove the patches
  4. do:
    for i in 1 2 3 4; do echo $i && wget http://distfiles.macports.org/db4/4.6.21_6/patch.4.6.21.$i; done
  5. run „port install db46“ again

Quelle: db46 – Checksum (md5) mismatch for patch.4.6.21.X

Der angegebene Pfad stimmte bei mir nicht. Und leider konnte ich die Anweisung mit der for-Schleife auch nicht in einer Shell ausführen und musste deshalb die Patches eigenhändig runterladen. Danach konnte subversion und seine Abhängigkeiten aber problemlos kompiliert werden.

svn copy

Nun endlich war ich ready:

svn copy http://repo.tld/lizentiat/ http://repo.tld/publikation/

Dies (und viele andere Aktionen auch, wie bspw. ein simples svn del resultierten in einem Segmentation Fault.

svn serf oder neon?

Wie ich nach einigem googlen herausfand, musste ich die svn-Konfiguration unter /etc/subversion/servers auf dem Debian-Server anpassen:

...
http-library = neon
...

Bis anhin war die verwendete Library serf gewesen.

Anschliessend konnte ich — mit ca. 2-3-stündiger Verspätung — endlich den Branch erzeugen und die ersten Anpassungen am Layout vornehmen.

Tags: , , ,
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 26. März 2009

Einige neue LaTeX-Kniffe

Linksbündige Listen

Wer sich in itemize-Umgebungen über den Blocksatz aufregt, schaltet äusserst einfach auf linksbündige Formatierung um:

\makeatletter 
\g@addto@macro\itemize{\raggedright} 
\makeatother

Quelle: Elemente der itemize-Umgebung linksbündig setzen

Listen ohne Ränder

Um weiterhin die Wahl zwischen linksbündig und Blocksatz zu haben, habe ich dafür kurzerhand eine neue Umgebung namens Itemize kreiert (man beachte die Grossschreibung), wo ich auch gleich noch einige Anpassungen an den Abständen vornehme. Leider ist es nämlich mit \begin{itemize} nicht möglich, Anpassungen an den linken und rechten Rändern vorzunehmen (Liste der veränderbaren Masse):

% Listen innerhalb Multicolumn
\newenvironment{Itemize}%
{\begin{list}{\textendash}{\leftmargin=1em
      \rightmargin=0pt%
      \partopsep=0pt%
      \topsep=0pt%
      \itemsep=0pt%
      }%
 {\singlespacing%
 }}%
{\end{list}}%

Quelle: LaTeX: indentation itemize

Abschnitt mit drei Spalten

Wer innerhalb eines einspaltigen Dokuments für kurze Zeit auf mehrere Spalten umschalten möchte, benutzt das multicols-Package:

\setlength\columnsep{30pt}
\begin{multicols}{3}
\setlength\columnseprule{0.4pt}
\singlespacing
\raggedcolumns

... Text erste Spalte ...

\vfill \columnbreak

... Text zweite Spalte ...

\vfill \columnbreak

... Text dritte Spalte ...

\end{multicols}

Damit der Abstand zwischen den Spalten wirksam wird, ist darauf zu achten, dass die gewünschte Länge (hier: 30pt) vor dem generieren der Umgebung definiert wird. Mittels \columnbreak wechselt man in die nächste Spalte.

Quelle: Re: \columnsep with multicol

Silbentrennung verfeinert

Kurz vor Ende einer schriftlichen Arbeit beginnt man sich auch um die Ästhetik zu sorgen. Insbesondere Bindestriche sind für LaTeX nicht ganz trivial. Zur Rekapitulation:

  • \- Ein Wort darf nur genau hier getrennt werden, sonst nirgends
  • "- Zusätzliche Trennstelle
  • "= Erstellt einen Bindestrich, nach dem nach Bedarf umbrochen wird
  • -"" Dasselbe; der Bindestrich wird aber explizit geschrieben („“ ist der eigentliche Umbruch-Befehl)
  • "~ Dieser Bindestrich darf nicht getrennt werden

Quelle: LaTeX-Wörterbuch: Silbentrennung

Sauber eingerückte Description-Listen

Mit Microsoft Word absolut kein Problem, mit LaTeX beisst man sich die Zähne aus. Dank The LaTeX Companion keine Hexerei mehr. Zuerst die Definition:

% Description-Listen
\newenvironment{Description}[1]
{\begin{list}{}%
 {\renewcommand\makelabel[1]{\textsf{\textbf{##1}}\hfill}%
 \singlespacing
 \settowidth\labelwidth{\makelabel{#1}}%
 \setlength\leftmargin{\labelwidth+\labelsep}}}%
{\end{list}}%

Bei der Anwendung im Dokument übergibt man der neu erstellten Listen-Umgebung dasjenige Description-Label mit den meisten Buchstaben. Anhand von diesem wird der Maximalabstand des Labels vom Beschreibungstext festgelegt:

\begin{Description}{Hier steht das längste Label}
\item[Kleineres Label] bla bla bla
\item[Mittelgrosses Label] bla bla bla
\item[Hier steht das längste Label] bla bla bla
\end{Description}

Tags: ,
Labels: Wissenschaft

Keine Kommentare | neuen Kommentar verfassen

Samstag, 7. März 2009

Damit LaTeX Paragraphen nicht vertikal auf die Seite verteilt

If latex can’t fill a page (perhaps because the next object is a figure or table that doesn’t fit, or because the next object is a heading that latex doesn’t want to put at the foot of a page) then by default it will spread the vertical white space on the page so that the „height“ of the page is the default height. If you want all the extra white space to appear at the bottom of such pages, add \raggedbottom before your \begin{document} line.

Quelle: Cambridge University Engineering Department – Squeezing Space in LaTeX

Wie lange habe ich mich darüber aufgeregt? Endlich ist die Lösung da …

Tags: ,
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 14. Oktober 2008

Wörter von LaTeX-Dokumenten zählen

Ein klitzekleiner Vorteil hat Microsoft Word gegenüber LaTeX: Es ist äusserst simpel, die Anzahl Wörter und Zeichen eines Dokuments abzufragen.

Da LaTeX aber Inhalt mit Markup vermischt, ist es für solche Dokumente nicht trivial, eine aussagekräftige Zahl zu erhalten.

Glücklicherweise hat sich ein Perl-Jünger dieses Mankos angenommen und ein entsprechendes Script programmiert:

LaTeX word count: script and web-interface

Nachdem man dieses Script heruntergeladen und am geeigneten Ort installiert hat, produziert eine Ausführung folgende Ausgabe:

$ /usr/local/bin/TeXcount.pl *.tex
...
TotalSUM
Words in text: 7862
Words in headers: 115
Words in float captions: 525
Number of headers: 47
Number of floats: 0
Number of math inlines: 8
Number of math displayed: 0

Einen Wunsch hätte ich noch: Die Ausgabe der Zeichenzahl. Diese rechne ich derzeit mit 5 x 7862 hoch – von der Annahme ausgehend, dass deutsche Worter im Schnitt 5 Buchstaben besitzen.

Tags:
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Montag, 13. Oktober 2008

Altes Pfund (lb) in LaTeX

Wer das im deutschen Raum gebräuchliche alte Pfund-Symbol in LaTeX reproduzieren möchte (Screenshot auf Wikipedia), nehme sich das Paket MarVoSym zu Hilfe.

Bei meiner LaTeX-Installation unter Mac OS X war das Paket glücklicherweise bereits installiert, weshalb ich es nur noch in mein Dokument einbinden musste:

\usepackage{marvosym}

Ab sofort konnte ich das Währungs-Symbol folgendermassen drucken:

\Pfund

Bei der Suche nach dem entsprechenden Paket war die Comprehensive LaTeX Symbol List von grossem Wert.

Nachtrag: Manchmal wäre der Umweg über die Liste gar nicht nötig, steht doch in der Legende des Wikipedia-Bildlis …

Kürzel für die Maßeinheit Pfund (erstellt mit dem marvosym-Paket für LaTeX)

Wer lesen kann hat klare Vorteile!

Tags: ,
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 9. Oktober 2008

Mittelhochdeutsch: Wörterbuch und LaTeX

Wörterbuch

Derzeit schreibe ich an einer Proseminararbeit über ein Thema aus dem Spätmittelalter. Da die bernischen Quellen auf Mittelhochdeutsch (ich habe anfänglich den Oberbegriff Altdeutsch verwendet, der in Mittel- und Althochdeutsch zusammenfasst) abgefasst sind (Gott sei dank nicht in Lateinisch!), stolpere ich hie und da über Wörter, deren Bedeutung sich meiner Kenntnis entzieht.

Rettung naht – selbstverständlich im Netz:

Mittelhochdeutsches Handwörterbuch von Matthias Lexer

LaTeX

Wer mittelhochdeutsche Texte transkribiert, sollte folgenden Befehl auswendig lernen:

\r{u}

Quelle: LaTeX und althochdeutsche „Sonderzeichen“

Dies produziert einen u mit darüber hochgestelltem o – ein Buchstage, wie man ihn beispielsweise im Wort muolten antrifft.

Was das Wort bedeutet, zeigt eine Lexikon-Suche. („mulde“)

Nachtrag: Noch besser ist die Verwendung des Tipa-Packages, mit dem man wirklich jedes Mittelhochdeutsche Zeichen hinkriegt.

Man verwende dazu den \sups-Befehl:

l\sups{u}{i}ten

Die Tipa-Schriften (im Ordner type1 des ZIP-Archivs, dass man von www.ctan.org/get/fonts/tipa.zip herunterlädt) installiert man am Besten, indem man das Makefile anpasst (korrekter Pfad von $TEXMF) und danach ein

# make install

durchführt.

Damit tipa.map auch geladen wird, war bei mir noch ein

# texhash
# mktexlsr
# ./updmap --enable Map=tipa.map

nötig. Ansonsten generiert das Paket die Zeichen aus Bitmap-Schriften, was bei einer 100%igen Vergrösserung gut sichtbar wird.

Tags: , , ,
Labels: Web

1 Kommentar | neuen Kommentar verfassen

Montag, 30. Juni 2008

Anpassung der Silbentrennung von LaTeX

In den meisten Fällen trennt LaTeX Wörter anstandslos. Es kann aber Spezialfälle geben, wo man selber noch ein wenig Hand anlegen muss. Dafür bieten sich zwei Vorgehensweisen an:

  • Bei Spezialkonstruktionen wie
    [Hagel-]Schäden

    beugt man hässlichen Umbrüchen vor, indem man

    [Hagel"~]""Schäden

    schreibt. Das Wort wird so künftig nicht mehr getrennt.

  • Mit dem Befehl \hyphenation{...} kann man eigene Trenn-Regeln für alle Wörter definieren, die komisch getrennt werden. In meiner Liz-Arbeit sieht das dann so aus:
    \hyphenation{Teil-as-pekt Blocka-de Frie-dens-ein-fuhr Ele-men-tar-scha-dens-sum-men}

    Von Vorteil ist, wer einen Duden (Bd. 1) zur Hand hat – die schwarzen und roten senkrechten Striche zwischen den Wortbausteinen geben die Trennungsorte an. Ersetzt man die senkrechten Striche im hyphenation-Befehl mit BIndestrichen, trennt man ab sofort Duden-konform.

Via: LaTeX-Wörterbuch: Silbentrennung

Tags: ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen