Seite 1 von 1

Verzerrte Tabelle mit datatool

Verfasst: Mi 22. Mai 2019, 16:48
von ThoRie
Hallo, ich habe ein Anliegen zu folgendem Code:
\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
\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 :/

Verfasst: Mi 22. Mai 2019, 17:10
von Gast

Verfasst: Mi 22. Mai 2019, 17:12
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
\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}

Verfasst: Mi 22. Mai 2019, 17:34
von ThoRie
Danke, das ist genau das, was ich erreichen wollte :D