Verzerrte Tabelle mit datatool

Tabellen und Grafiken erstellen und anordnen


ThoRie
Forum-Century
Forum-Century
Beiträge: 117
Registriert: Fr 12. Mai 2017, 11:57

Verzerrte Tabelle mit datatool

Beitrag von ThoRie »

Hallo, ich habe ein Anliegen zu folgendem Code:

Code: Alles auswählen

\documentclass[12pt,a4paper]{article}

\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{filecontents}
\begin{filecontents*}{elnum6b.txt}
\num{e-1} 0,953101798043 \num{4,7e-2}
\num{e-2} 0,995033085317 \num{5,0e-3}
\num{e-3} 0,999500333083 \num{5,0e-4}
\num{e-4} 0,999950003333 \num{5,0e-5}
\num{e-5} 0,999995000040 \num{5,0e-6}
\num{e-6} 0,999999499918 \num{5,0e-7}
\num{e-7} 0,999999950584 \num{4,9e-8}
\num{e-8} 0,999999988923 \num{1,1e-8}
\num{e-9} 1,000000082240 \num{8,2e-8}
\num{e-10} 1,000000082690 \num{8,3e-8}
\num{e-11} 1,000000082735 \num{8,3e-8}
\num{e-12} 1,000088900582 \num{8,9e-5}
\num{e-13} 0,999200722163 \num{8,0e-4}
\num{e-14} 0,999200722163 \num{8,0e-4}
\num{e-15} 1,110223024625 \num{1,1e-1}
\end{filecontents*}
\usepackage{datatool}
\DTLsetseparator{ }
\DTLloaddb[noheader]{elnum6a}{elnum6b.txt}
\usepackage{hyperref}
\begin{document}
\DTLsetheader{elnum6a}{Column1}{I}
\DTLsetheader{elnum6a}{Column2}{II}
\DTLsetheader{elnum6a}{Column3}{III}
\renewcommand\dtlheaderformat[1]{#1}
\begin{tabularx}{\textwidth}{XXX}
\toprule
$\lg(h)$ & $\Delta(h)$ & $\lg(\Delta(h))$\\\midrule
\DTLforeach{elnum6a}{\sI=Column1,\sII=Column2,\sIII=Column3}{%
  \sI&\sII&\sIII%
  \DTLiflastrow{}{\\}%
}\\\bottomrule
\end{tabularx}
\end{document}
Und zwar ist die Tabelle ja, wie unschwer zu erkennen ist, sehr verzerrt. Ich habe bereits herausgefunden, dass das Problem verschwindet, wenn ich

Code: Alles auswählen

\usepackage{hyperref}
aus der Präambel entferne. Aber genau da liegt auch das Problem, das kann ich unter keinen Umständen machen, da ich hyperref dringend brauche.

Jetzt steht also die Frage, ob das jemand beheben kann, ohne, dass ich hyperref raus nehmen muss :/


esdd
Forum-Meister
Forum-Meister
Beiträge: 2481
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Wenn ich nach hyperref datatool suche, bekomme ich als ersten Treffer Creating table using tabularx and datatool from csv file. Dort findest Du eine Erklärung für das Verhalten und zwei Lösungsvorschläge, beispielsweise

Code: Alles auswählen

\documentclass[12pt,a4paper]{article} 

\usepackage{tabularx} 
\usepackage{booktabs} 
\usepackage{siunitx} 
\usepackage{filecontents} 
\begin{filecontents*}{elnum6b.txt} 
\num{e-1} 0,953101798043 \num{4,7e-2} 
\num{e-2} 0,995033085317 \num{5,0e-3} 
\num{e-3} 0,999500333083 \num{5,0e-4} 
\num{e-4} 0,999950003333 \num{5,0e-5} 
\num{e-5} 0,999995000040 \num{5,0e-6} 
\num{e-6} 0,999999499918 \num{5,0e-7} 
\num{e-7} 0,999999950584 \num{4,9e-8} 
\num{e-8} 0,999999988923 \num{1,1e-8} 
\num{e-9} 1,000000082240 \num{8,2e-8} 
\num{e-10} 1,000000082690 \num{8,3e-8} 
\num{e-11} 1,000000082735 \num{8,3e-8} 
\num{e-12} 1,000088900582 \num{8,9e-5} 
\num{e-13} 0,999200722163 \num{8,0e-4} 
\num{e-14} 0,999200722163 \num{8,0e-4} 
\num{e-15} 1,110223024625 \num{1,1e-1} 
\end{filecontents*} 
\usepackage{datatool} 
\DTLsetseparator{ } 
\DTLloaddb[noheader]{elnum6a}{elnum6b.txt} 
\usepackage{hyperref} 
\begin{document} 
%\DTLsetheader{elnum6a}{Column1}{I} 
%\DTLsetheader{elnum6a}{Column2}{II} 
%\DTLsetheader{elnum6a}{Column3}{III} 
%\renewcommand\dtlheaderformat[1]{#1} 
\begin{NoHyper}% <- ergänzt
\begin{tabularx}{\textwidth}{XXX} 
\toprule 
$\lg(h)$ & $\Delta(h)$ & $\lg(\Delta(h))$\tabularnewline\midrule 
\DTLforeach{elnum6a}{\sI=Column1,\sII=Column2,\sIII=Column3}{% 
  \sI&\sII&\sIII% 
  \DTLiflastrow{}{\\}% 
}\\\bottomrule 
\end{tabularx}% <- ergänzt
\end{NoHyper}
\end{document}

ThoRie
Forum-Century
Forum-Century
Beiträge: 117
Registriert: Fr 12. Mai 2017, 11:57

Beitrag von ThoRie »

Danke, das ist genau das, was ich erreichen wollte :D

Antworten