Seite 1 von 1

Ärger mit datatool

Verfasst: Mi 2. Mär 2016, 14:04
von 555nase
Hallo liebe LaTeX-Gemeinde.

Ich verzweifle noch an datatool... Ich habe ein Beispiel, welches zuerst prima funktionierte. Auf einmal gibt mir Latex einen Fehler heraus.
\documentclass[12pt,a4paper,oneside,DIV=calc]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\renewcommand{\sfdefault}{phv} 
\renewcommand{\rmdefault}{pplj} 
\usepackage{datatool} %externe Daten einbinden
\usepackage[format=plain,indention=.5cm,labelfont=bf,textfont=it,tableposition=top,labelsep=endash]{caption} % Abbildungs und Tabellenbeschriftungen


\DeclareCaptionFormat{beschriftung}{#1#2#3}
\DeclareCaptionListFormat{table}{Tafel T.#1. #2}
\captionsetup{format=beschriftung,labelsep=endash,singlelinecheck=no}
\captionsetup[table]{name=Tafel}

\begin{document}
\begin{table}[!htbp]
	\caption[\textsc{Etienne} (1991), S.215f.; CIL IV 5380.]{Preise nach \textsc{Etienne} (1991), S.215f.; CIL IV 5380.}
	\bigskip
	\centering
	\DTLloaddb{preise}{preise.csv}
	\DTLdisplaydb{preise}
	\label{tab:preise}
\end{table}
\end{document}

Als Fehler kommt Folgendes, und ich kann wirklich nicht sagen warum:
! Missing { inserted.
<to be read again>
\let
l.20 \DTLloaddb{preise}{preise.csv}

A left brace was mandatory here, so I've put one in.
You might want to delete and/or insert some corrections
so that I will find a matching right brace soon.
(If you're confused by all this, try typing `I}' now.)


! LaTeX Error: \begin{table} on input line 16 ended by \end{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...

l.24 \end{document}

Your command was ignored.
Type I <command> <return> to replace it with another command,
or <return> to continue without it.

(minimalbeispiel.aux)
! You can't use `\end' in internal vertical mode.
\enddocument ...cumenthook \deadcycles \z@ \@@end

l.24 \end{document}

Sorry, but I'm not programmed to handle this case;
I'll just pretend that you didn't ask for it.
If you're in the wrong mode, you might be able to
return to the right one by typing `I}' or `I$' or `I\par'.
Vielleicht kann mir jemand helfen.

Ist es vielleicht besser csvtools zu benutzen. Irgendwie erscheint mir "datatool" ein bisschen "zerbrechlich"...

Verfasst: Mi 2. Mär 2016, 15:42
von 555nase
Also ich habe die Datei neu aus Libreoffice-CALC exportiert ins betreffende Verzeichnis. Danach hat es wieder funktioniert.

Das Verhalten ist eigenartig. Denn wenn ich per Hand etwas an der .csv ändere, funktioniert es nicht mehr, dann kommt der Fehler.

Erst wenn die Datei neu ins Verzeichnis kopiert oder exportiert wird, funktioniert es wieder.

:shock:

Verfasst: Mi 2. Mär 2016, 16:44
von Bartman
Ich habe Dein Beispiel verändert, damit es etwas übersichtlicher ist.
\begin{filecontents}{preise.csv}
Lebensmittel:,"ein modius (6,503 kg) Roggen",12 As = 3 Sesterzen
,"ein modius (6,503 kg) Weizen","30 As = 7 Sesterzen, 2 As"
,"ein modius (6,503 kg) Lupinen",3 As
,"eine libra (0,328 kg) öl",4 As = 1 Sesterze
,ein Maß einfachen Wein,1 As
,ein Maß Falerner,4 As = 1 Sesterze
Geschirr:,ein Breitopf,1 As
,ein Teller,1 As
,ein kleines Trinkgefäß,2 As
,ein Eimer,"9 As = 2 Sesterzen, 1 As"
,eine Lampe,1 As
,ein silbernes Sieb,90 Denare = 360 Sesterzen
Kleidung:,eine Tunika,15 Sesterzen
,Reinigung einer Tunika,1 Denar = 4 Sesterzen
Tiere:,ein Maultier ,520 Sesterzen
Sklaven:,zwei Sklaven ,5048 Sesterzen
\end{filecontents}

\documentclass[
	fontsize=12pt,
%    a4paper,		Voreinstellung der Dokumentklasse
%    oneside,		s. o.
   captions=tableheading,
   DIV=calc
]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\renewcommand{\sfdefault}{phv} 
\renewcommand{\rmdefault}{pplj} 
\usepackage{datatool} %externe Daten einbinden
\usepackage[format=plain,indention=.5cm,labelfont=bf,textfont=it,tableposition=top,labelsep=endash]{caption} % Abbildungs und Tabellenbeschriftungen
\usepackage{booktabs}


\DeclareCaptionFormat{beschriftung}{#1#2#3}
\DeclareCaptionListFormat{table}{Tafel T.#1. #2}
\captionsetup{format=beschriftung,labelsep=endash,singlelinecheck=no}
\captionsetup[table]{name=Tafel}

\renewcommand{\dtldisplaystarttab}{\toprule}
\renewcommand{\dtldisplayendtab}{\\\bottomrule}

\begin{document}

\begin{table}[htbp]
	\centering
	\caption[\textsc{Etienne} (1991), S.215f.; CIL IV 5380.]{Preise nach \textsc{Etienne} (1991), S.215f.; CIL IV 5380.}
	\renewcommand{\arraystretch}{1.2}
	\DTLloaddb{preise}{preise.csv}
	\DTLdisplaydb{preise}
	\label{tab:preise}
\end{table}
\end{document}
Der Inhalt Deiner Tabellenbeschriftung sieht nach einem Literaturverweis aus. Setzt Du alle Literaturverweise in Deinem Dokument in dieser Form oder nur in diesem Beispiel, um es einfach zu halten?

Verfasst: Mi 2. Mär 2016, 17:27
von 555nase
Hallo Bartman.

Vielen Dank. Ich habe auch schon das nächste Problem, aber das öffne ich neu.

Ja das ist ein Literaturverweis. Mit

\citeauthor{Etienne.1991},\citeyear{Etienne.1991} 

hat es in der caption auch nicht funktioniert.

Verfasst: Mi 2. Mär 2016, 17:51
von u_fischer
555nase hat geschrieben:Also ich habe die Datei neu aus Libreoffice-CALC exportiert ins betreffende Verzeichnis. Danach hat es wieder funktioniert.

Das Verhalten ist eigenartig. Denn wenn ich per Hand etwas an der .csv ändere, funktioniert es nicht mehr, dann kommt der Fehler.

Erst wenn die Datei neu ins Verzeichnis kopiert oder exportiert wird, funktioniert es wieder.

:shock:
Nun, wenn man eine Datei ändert, kann man sie auch kaputt machen. In diesem Fall scheinst du sie als utf8 mit Unicode BOM zu speichern, und zumindest in miktex führt das zu Fehlern.