¿Depende la cantidad del comando de tamaño de archivo?

¿Depende la cantidad del comando de tamaño de archivo?

Al escribir un cv decidí separar el archivo tex del contenido. Copié el contenido en un archivo csv para poder cargarlo con datatool.

Pero esto aumenta enormemente el tamaño del PDF:

  1. Contenido completo directamente en código tex. Tamaño: 101Kb.
  2. Externalice el contenido a un archivo csv. Tamaño: 5.093 KB.

MWE compilado con pdflatex:

\documentclass{scrreprt}

\usepackage[T1]{fontenc}% Use 8-bit encoding that has 256 glyphs
\usepackage[utf8]{inputenc}% Uses the utf8 input encoding
\usepackage{datatool}
\usepackage{filecontents}% added to write additional files.
\usepackage{hyperref}

% Massive lines to show the differences in this file
\begin{document}
\begin{filecontents}{dbload.tex}
\DTLloadrawdb[keys={c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,c21,c22,c23,c24,c25}]{cv}{./cvtestdatabase.csv}
\FPupn{langselectkey}{langselect 7 + 0 round}
\DTLgetvalueforkey{\Langaugecode}{c\langselectkey}{cv}{c1}{Langaugecode}
\typeout{Loading A}
\DTLgetvalueforkey{\chapterAtestaaaa}{c\langselectkey}{cv}{c1}{chapterAtestaaaa}
\DTLgetvalueforkey{\chapterAtestaaab}{c\langselectkey}{cv}{c1}{chapterAtestaaab}
\DTLgetvalueforkey{\chapterAtestaaac}{c\langselectkey}{cv}{c1}{chapterAtestaaac}
\DTLgetvalueforkey{\chapterAtestaaad}{c\langselectkey}{cv}{c1}{chapterAtestaaad}
\DTLgetvalueforkey{\chapterAtestaaae}{c\langselectkey}{cv}{c1}{chapterAtestaaae}
\DTLgetvalueforkey{\chapterAtestaaaf}{c\langselectkey}{cv}{c1}{chapterAtestaaaf}
\DTLgetvalueforkey{\chapterAtestaaag}{c\langselectkey}{cv}{c1}{chapterAtestaaag}
\DTLgetvalueforkey{\chapterAtestaaah}{c\langselectkey}{cv}{c1}{chapterAtestaaah}
\DTLgetvalueforkey{\chapterAtestaaai}{c\langselectkey}{cv}{c1}{chapterAtestaaai}
\DTLgetvalueforkey{\chapterAtestaaaj}{c\langselectkey}{cv}{c1}{chapterAtestaaaj}
\DTLgetvalueforkey{\chapterAtestaaak}{c\langselectkey}{cv}{c1}{chapterAtestaaak}
\DTLgetvalueforkey{\chapterAtestaaal}{c\langselectkey}{cv}{c1}{chapterAtestaaal}
\DTLgetvalueforkey{\chapterAtestaaam}{c\langselectkey}{cv}{c1}{chapterAtestaaam}
\typeout{Loading B}
\DTLgetvalueforkey{\chapterBtestaaaa}{c\langselectkey}{cv}{c1}{chapterBtestaaaa}
\DTLgetvalueforkey{\chapterBtestaaab}{c\langselectkey}{cv}{c1}{chapterBtestaaab}
\DTLgetvalueforkey{\chapterBtestaaac}{c\langselectkey}{cv}{c1}{chapterBtestaaac}
\DTLgetvalueforkey{\chapterBtestaaad}{c\langselectkey}{cv}{c1}{chapterBtestaaad}
\DTLgetvalueforkey{\chapterBtestaaae}{c\langselectkey}{cv}{c1}{chapterBtestaaae}
\DTLgetvalueforkey{\chapterBtestaaaf}{c\langselectkey}{cv}{c1}{chapterBtestaaaf}
\DTLgetvalueforkey{\chapterBtestaaag}{c\langselectkey}{cv}{c1}{chapterBtestaaag}
\DTLgetvalueforkey{\chapterBtestaaah}{c\langselectkey}{cv}{c1}{chapterBtestaaah}
\DTLgetvalueforkey{\chapterBtestaaai}{c\langselectkey}{cv}{c1}{chapterBtestaaai}
\DTLgetvalueforkey{\chapterBtestaaaj}{c\langselectkey}{cv}{c1}{chapterBtestaaaj}
\DTLgetvalueforkey{\chapterBtestaaak}{c\langselectkey}{cv}{c1}{chapterBtestaaak}
\DTLgetvalueforkey{\chapterBtestaaal}{c\langselectkey}{cv}{c1}{chapterBtestaaal}
\DTLgetvalueforkey{\chapterBtestaaam}{c\langselectkey}{cv}{c1}{chapterBtestaaam}
\DTLgetvalueforkey{\chapterBtestaaan}{c\langselectkey}{cv}{c1}{chapterBtestaaan}
\DTLgetvalueforkey{\chapterBtestaaao}{c\langselectkey}{cv}{c1}{chapterBtestaaao}
\DTLgetvalueforkey{\chapterBtestaaap}{c\langselectkey}{cv}{c1}{chapterBtestaaap}
\DTLgetvalueforkey{\chapterBtestaaaq}{c\langselectkey}{cv}{c1}{chapterBtestaaaq}
\DTLgetvalueforkey{\chapterBtestaaar}{c\langselectkey}{cv}{c1}{chapterBtestaaar}
\DTLgetvalueforkey{\chapterBtestaaas}{c\langselectkey}{cv}{c1}{chapterBtestaaas}
\DTLgetvalueforkey{\chapterBtestaaat}{c\langselectkey}{cv}{c1}{chapterBtestaaat}
\DTLgetvalueforkey{\chapterBtestaaau}{c\langselectkey}{cv}{c1}{chapterBtestaaau}
\DTLgetvalueforkey{\chapterBtestaaav}{c\langselectkey}{cv}{c1}{chapterBtestaaav}
\DTLgetvalueforkey{\chapterBtestaaaw}{c\langselectkey}{cv}{c1}{chapterBtestaaaw}
\DTLgetvalueforkey{\chapterBtestaaax}{c\langselectkey}{cv}{c1}{chapterBtestaaax}
\DTLgetvalueforkey{\chapterBtestaaay}{c\langselectkey}{cv}{c1}{chapterBtestaaay}
\DTLgetvalueforkey{\chapterBtestaaaz}{c\langselectkey}{cv}{c1}{chapterBtestaaaz}
\DTLgetvalueforkey{\chapterBtestaaba}{c\langselectkey}{cv}{c1}{chapterBtestaaba}
\DTLgetvalueforkey{\chapterBtestaabb}{c\langselectkey}{cv}{c1}{chapterBtestaabb}
\DTLgetvalueforkey{\chapterBtestaabc}{c\langselectkey}{cv}{c1}{chapterBtestaabc}
\DTLgetvalueforkey{\chapterBtestaabd}{c\langselectkey}{cv}{c1}{chapterBtestaabd}
\DTLgetvalueforkey{\chapterBtestaabe}{c\langselectkey}{cv}{c1}{chapterBtestaabe}
\DTLgetvalueforkey{\chapterBtestaabf}{c\langselectkey}{cv}{c1}{chapterBtestaabf}
\DTLgetvalueforkey{\chapterBtestaabg}{c\langselectkey}{cv}{c1}{chapterBtestaabg}
\DTLgetvalueforkey{\chapterBtestaabh}{c\langselectkey}{cv}{c1}{chapterBtestaabh}
\DTLgetvalueforkey{\chapterBtestaabi}{c\langselectkey}{cv}{c1}{chapterBtestaabi}
\DTLgetvalueforkey{\chapterBtestaabj}{c\langselectkey}{cv}{c1}{chapterBtestaabj}
\DTLgetvalueforkey{\chapterBtestaabk}{c\langselectkey}{cv}{c1}{chapterBtestaabk}
\DTLgetvalueforkey{\chapterBtestaabl}{c\langselectkey}{cv}{c1}{chapterBtestaabl}
\DTLgetvalueforkey{\chapterBtestaabm}{c\langselectkey}{cv}{c1}{chapterBtestaabm}
\DTLgetvalueforkey{\chapterBtestaabn}{c\langselectkey}{cv}{c1}{chapterBtestaabn}
\DTLgetvalueforkey{\chapterBtestaabo}{c\langselectkey}{cv}{c1}{chapterBtestaabo}
\DTLgetvalueforkey{\chapterBtestaabp}{c\langselectkey}{cv}{c1}{chapterBtestaabp}
\DTLgetvalueforkey{\chapterBtestaabq}{c\langselectkey}{cv}{c1}{chapterBtestaabq}
\DTLgetvalueforkey{\chapterBtestaabr}{c\langselectkey}{cv}{c1}{chapterBtestaabr}
\DTLgetvalueforkey{\chapterBtestaabs}{c\langselectkey}{cv}{c1}{chapterBtestaabs}
\DTLgetvalueforkey{\chapterBtestaabt}{c\langselectkey}{cv}{c1}{chapterBtestaabt}
\DTLgetvalueforkey{\chapterBtestaabu}{c\langselectkey}{cv}{c1}{chapterBtestaabu}
\DTLgetvalueforkey{\chapterBtestaabv}{c\langselectkey}{cv}{c1}{chapterBtestaabv}
\DTLgetvalueforkey{\chapterBtestaabw}{c\langselectkey}{cv}{c1}{chapterBtestaabw}
\DTLgetvalueforkey{\chapterBtestaabx}{c\langselectkey}{cv}{c1}{chapterBtestaabx}
\DTLgetvalueforkey{\chapterBtestaaby}{c\langselectkey}{cv}{c1}{chapterBtestaaby}
\DTLgetvalueforkey{\chapterBtestaabz}{c\langselectkey}{cv}{c1}{chapterBtestaabz}
\DTLgetvalueforkey{\chapterBtestaaca}{c\langselectkey}{cv}{c1}{chapterBtestaaca}
\DTLgetvalueforkey{\chapterBtestaacb}{c\langselectkey}{cv}{c1}{chapterBtestaacb}
\DTLgetvalueforkey{\chapterBtestaacc}{c\langselectkey}{cv}{c1}{chapterBtestaacc}
\DTLgetvalueforkey{\chapterBtestaacd}{c\langselectkey}{cv}{c1}{chapterBtestaacd}
\DTLgetvalueforkey{\chapterBtestaace}{c\langselectkey}{cv}{c1}{chapterBtestaace}
\DTLgetvalueforkey{\chapterBtestaacf}{c\langselectkey}{cv}{c1}{chapterBtestaacf}
\DTLgetvalueforkey{\chapterBtestaacg}{c\langselectkey}{cv}{c1}{chapterBtestaacg}
\DTLgetvalueforkey{\chapterBtestaach}{c\langselectkey}{cv}{c1}{chapterBtestaach}
\DTLgetvalueforkey{\chapterBtestaaci}{c\langselectkey}{cv}{c1}{chapterBtestaaci}
\DTLgetvalueforkey{\chapterBtestaacj}{c\langselectkey}{cv}{c1}{chapterBtestaacj}
\DTLgetvalueforkey{\chapterBtestaack}{c\langselectkey}{cv}{c1}{chapterBtestaack}
\DTLgetvalueforkey{\chapterBtestaacl}{c\langselectkey}{cv}{c1}{chapterBtestaacl}
\DTLgetvalueforkey{\chapterBtestaacm}{c\langselectkey}{cv}{c1}{chapterBtestaacm}
\DTLgetvalueforkey{\chapterBtestaacn}{c\langselectkey}{cv}{c1}{chapterBtestaacn}
\DTLgetvalueforkey{\chapterBtestaaco}{c\langselectkey}{cv}{c1}{chapterBtestaaco}
\DTLgetvalueforkey{\chapterBtestaacp}{c\langselectkey}{cv}{c1}{chapterBtestaacp}
\DTLgetvalueforkey{\chapterBtestaacq}{c\langselectkey}{cv}{c1}{chapterBtestaacq}
\DTLgetvalueforkey{\chapterBtestaacr}{c\langselectkey}{cv}{c1}{chapterBtestaacr}
\DTLgetvalueforkey{\chapterBtestaacs}{c\langselectkey}{cv}{c1}{chapterBtestaacs}
\DTLgetvalueforkey{\chapterBtestaact}{c\langselectkey}{cv}{c1}{chapterBtestaact}
\DTLgetvalueforkey{\chapterBtestaacu}{c\langselectkey}{cv}{c1}{chapterBtestaacu}
\DTLgetvalueforkey{\chapterBtestaacv}{c\langselectkey}{cv}{c1}{chapterBtestaacv}
\DTLgetvalueforkey{\chapterBtestaacw}{c\langselectkey}{cv}{c1}{chapterBtestaacw}
\DTLgetvalueforkey{\chapterBtestaacx}{c\langselectkey}{cv}{c1}{chapterBtestaacx}
\DTLgetvalueforkey{\chapterBtestaacy}{c\langselectkey}{cv}{c1}{chapterBtestaacy}
\DTLgetvalueforkey{\chapterBtestaacz}{c\langselectkey}{cv}{c1}{chapterBtestaacz}
\DTLgetvalueforkey{\chapterBtestaada}{c\langselectkey}{cv}{c1}{chapterBtestaada}
\DTLgetvalueforkey{\chapterBtestaadb}{c\langselectkey}{cv}{c1}{chapterBtestaadb}
\DTLgetvalueforkey{\chapterBtestaadc}{c\langselectkey}{cv}{c1}{chapterBtestaadc}
\DTLgetvalueforkey{\chapterBtestaadd}{c\langselectkey}{cv}{c1}{chapterBtestaadd}
\DTLgetvalueforkey{\chapterBtestaade}{c\langselectkey}{cv}{c1}{chapterBtestaade}
\DTLgetvalueforkey{\chapterBtestaadf}{c\langselectkey}{cv}{c1}{chapterBtestaadf}
\DTLgetvalueforkey{\chapterBtestaadg}{c\langselectkey}{cv}{c1}{chapterBtestaadg}
\DTLgetvalueforkey{\chapterBtestaadh}{c\langselectkey}{cv}{c1}{chapterBtestaadh}
\DTLgetvalueforkey{\chapterBtestaadi}{c\langselectkey}{cv}{c1}{chapterBtestaadi}
\DTLgetvalueforkey{\chapterBtestaadj}{c\langselectkey}{cv}{c1}{chapterBtestaadj}
\DTLgetvalueforkey{\chapterBtestaadk}{c\langselectkey}{cv}{c1}{chapterBtestaadk}
\DTLgetvalueforkey{\chapterBtestaadl}{c\langselectkey}{cv}{c1}{chapterBtestaadl}
\DTLgetvalueforkey{\chapterBtestaadm}{c\langselectkey}{cv}{c1}{chapterBtestaadm}
\DTLgetvalueforkey{\chapterBtestaadn}{c\langselectkey}{cv}{c1}{chapterBtestaadn}
\DTLgetvalueforkey{\chapterBtestaado}{c\langselectkey}{cv}{c1}{chapterBtestaado}
\DTLgetvalueforkey{\chapterBtestaadp}{c\langselectkey}{cv}{c1}{chapterBtestaadp}
\DTLgetvalueforkey{\chapterBtestaadq}{c\langselectkey}{cv}{c1}{chapterBtestaadq}
\DTLgetvalueforkey{\chapterBtestaadr}{c\langselectkey}{cv}{c1}{chapterBtestaadr}
\DTLgetvalueforkey{\chapterBtestaads}{c\langselectkey}{cv}{c1}{chapterBtestaads}
\DTLgetvalueforkey{\chapterBtestaadt}{c\langselectkey}{cv}{c1}{chapterBtestaadt}
\DTLgetvalueforkey{\chapterBtestaadu}{c\langselectkey}{cv}{c1}{chapterBtestaadu}
\DTLgetvalueforkey{\chapterBtestaadv}{c\langselectkey}{cv}{c1}{chapterBtestaadv}
\DTLgetvalueforkey{\chapterBtestaadw}{c\langselectkey}{cv}{c1}{chapterBtestaadw}
\DTLgetvalueforkey{\chapterBtestaadx}{c\langselectkey}{cv}{c1}{chapterBtestaadx}
\DTLgetvalueforkey{\chapterBtestaady}{c\langselectkey}{cv}{c1}{chapterBtestaady}
\DTLgetvalueforkey{\chapterBtestaadz}{c\langselectkey}{cv}{c1}{chapterBtestaadz}
\DTLgetvalueforkey{\chapterBtestaaea}{c\langselectkey}{cv}{c1}{chapterBtestaaea}
\DTLgetvalueforkey{\chapterBtestaaeb}{c\langselectkey}{cv}{c1}{chapterBtestaaeb}
\DTLgetvalueforkey{\chapterBtestaaec}{c\langselectkey}{cv}{c1}{chapterBtestaaec}
\DTLgetvalueforkey{\chapterBtestaaed}{c\langselectkey}{cv}{c1}{chapterBtestaaed}
\DTLgetvalueforkey{\chapterBtestaaee}{c\langselectkey}{cv}{c1}{chapterBtestaaee}
\typeout{Loading C}
\DTLgetvalueforkey{\chapterCtestaaaa}{c\langselectkey}{cv}{c1}{chapterCtestaaaa}
\DTLgetvalueforkey{\chapterCtestaaab}{c\langselectkey}{cv}{c1}{chapterCtestaaab}
\DTLgetvalueforkey{\chapterCtestaaac}{c\langselectkey}{cv}{c1}{chapterCtestaaac}
\DTLgetvalueforkey{\chapterCtestaaad}{c\langselectkey}{cv}{c1}{chapterCtestaaad}
\DTLgetvalueforkey{\chapterCtestaaae}{c\langselectkey}{cv}{c1}{chapterCtestaaae}
\DTLgetvalueforkey{\chapterCtestaaaf}{c\langselectkey}{cv}{c1}{chapterCtestaaaf}
\DTLgetvalueforkey{\chapterCtestaaag}{c\langselectkey}{cv}{c1}{chapterCtestaaag}
\DTLgetvalueforkey{\chapterCtestaaah}{c\langselectkey}{cv}{c1}{chapterCtestaaah}
\DTLgetvalueforkey{\chapterCtestaaai}{c\langselectkey}{cv}{c1}{chapterCtestaaai}
\DTLgetvalueforkey{\chapterCtestaaaj}{c\langselectkey}{cv}{c1}{chapterCtestaaaj}
\DTLgetvalueforkey{\chapterCtestaaak}{c\langselectkey}{cv}{c1}{chapterCtestaaak}
\DTLgetvalueforkey{\chapterCtestaaal}{c\langselectkey}{cv}{c1}{chapterCtestaaal}
\DTLgetvalueforkey{\chapterCtestaaam}{c\langselectkey}{cv}{c1}{chapterCtestaaam}
\DTLgetvalueforkey{\chapterCtestaaan}{c\langselectkey}{cv}{c1}{chapterCtestaaan}
\DTLgetvalueforkey{\chapterCtestaaao}{c\langselectkey}{cv}{c1}{chapterCtestaaao}
\DTLgetvalueforkey{\chapterCtestaaap}{c\langselectkey}{cv}{c1}{chapterCtestaaap}
\DTLgetvalueforkey{\chapterCtestaaaq}{c\langselectkey}{cv}{c1}{chapterCtestaaaq}
\DTLgetvalueforkey{\chapterCtestaaar}{c\langselectkey}{cv}{c1}{chapterCtestaaar}
\DTLgetvalueforkey{\chapterCtestaaas}{c\langselectkey}{cv}{c1}{chapterCtestaaas}
\DTLgetvalueforkey{\chapterCtestaaat}{c\langselectkey}{cv}{c1}{chapterCtestaaat}
\DTLgetvalueforkey{\chapterCtestaaau}{c\langselectkey}{cv}{c1}{chapterCtestaaau}
\DTLgetvalueforkey{\chapterCtestaaav}{c\langselectkey}{cv}{c1}{chapterCtestaaav}
\DTLgetvalueforkey{\chapterCtestaaaw}{c\langselectkey}{cv}{c1}{chapterCtestaaaw}
\DTLgetvalueforkey{\chapterCtestaaax}{c\langselectkey}{cv}{c1}{chapterCtestaaax}
\DTLgetvalueforkey{\chapterCtestaaay}{c\langselectkey}{cv}{c1}{chapterCtestaaay}
\DTLgetvalueforkey{\chapterCtestaaaz}{c\langselectkey}{cv}{c1}{chapterCtestaaaz}
\DTLgetvalueforkey{\chapterCtestaaba}{c\langselectkey}{cv}{c1}{chapterCtestaaba}
\DTLgetvalueforkey{\chapterCtestaabb}{c\langselectkey}{cv}{c1}{chapterCtestaabb}
\DTLgetvalueforkey{\chapterCtestaabc}{c\langselectkey}{cv}{c1}{chapterCtestaabc}
\DTLgetvalueforkey{\chapterCtestaabd}{c\langselectkey}{cv}{c1}{chapterCtestaabd}
\DTLgetvalueforkey{\chapterCtestaabe}{c\langselectkey}{cv}{c1}{chapterCtestaabe}
\DTLgetvalueforkey{\chapterCtestaabf}{c\langselectkey}{cv}{c1}{chapterCtestaabf}
\DTLgetvalueforkey{\chapterCtestaabg}{c\langselectkey}{cv}{c1}{chapterCtestaabg}
\DTLgetvalueforkey{\chapterCtestaabh}{c\langselectkey}{cv}{c1}{chapterCtestaabh}
\DTLgetvalueforkey{\chapterCtestaabi}{c\langselectkey}{cv}{c1}{chapterCtestaabi}
\DTLgetvalueforkey{\chapterCtestaabj}{c\langselectkey}{cv}{c1}{chapterCtestaabj}
\DTLgetvalueforkey{\chapterCtestaabk}{c\langselectkey}{cv}{c1}{chapterCtestaabk}
\DTLgetvalueforkey{\chapterCtestaabl}{c\langselectkey}{cv}{c1}{chapterCtestaabl}
\DTLgetvalueforkey{\chapterCtestaabm}{c\langselectkey}{cv}{c1}{chapterCtestaabm}
\DTLgetvalueforkey{\chapterCtestaabn}{c\langselectkey}{cv}{c1}{chapterCtestaabn}
\DTLgetvalueforkey{\chapterCtestaabo}{c\langselectkey}{cv}{c1}{chapterCtestaabo}
\DTLgetvalueforkey{\chapterCtestaabp}{c\langselectkey}{cv}{c1}{chapterCtestaabp}
\DTLgetvalueforkey{\chapterCtestaabq}{c\langselectkey}{cv}{c1}{chapterCtestaabq}
\DTLgetvalueforkey{\chapterCtestaabr}{c\langselectkey}{cv}{c1}{chapterCtestaabr}
\DTLgetvalueforkey{\chapterCtestaabs}{c\langselectkey}{cv}{c1}{chapterCtestaabs}
\DTLgetvalueforkey{\chapterCtestaabt}{c\langselectkey}{cv}{c1}{chapterCtestaabt}
\DTLgetvalueforkey{\chapterCtestaabu}{c\langselectkey}{cv}{c1}{chapterCtestaabu}
\DTLgetvalueforkey{\chapterCtestaabv}{c\langselectkey}{cv}{c1}{chapterCtestaabv}
\DTLgetvalueforkey{\chapterCtestaabw}{c\langselectkey}{cv}{c1}{chapterCtestaabw}
\DTLgetvalueforkey{\chapterCtestaabx}{c\langselectkey}{cv}{c1}{chapterCtestaabx}
\DTLgetvalueforkey{\chapterCtestaaby}{c\langselectkey}{cv}{c1}{chapterCtestaaby}
\DTLgetvalueforkey{\chapterCtestaabz}{c\langselectkey}{cv}{c1}{chapterCtestaabz}
\DTLgetvalueforkey{\chapterCtestaaca}{c\langselectkey}{cv}{c1}{chapterCtestaaca}
\DTLgetvalueforkey{\chapterCtestaacb}{c\langselectkey}{cv}{c1}{chapterCtestaacb}
\DTLgetvalueforkey{\chapterCtestaacb}{c\langselectkey}{cv}{c1}{chapterCtestaacc}
\typeout{Loading D}
\DTLgetvalueforkey{\chapterDtestaaaa}{c\langselectkey}{cv}{c1}{chapterDtestaaaa}
\DTLgetvalueforkey{\chapterDtestaaab}{c\langselectkey}{cv}{c1}{chapterDtestaaab}
\DTLgetvalueforkey{\chapterDtestaaac}{c\langselectkey}{cv}{c1}{chapterDtestaaac}
\DTLgetvalueforkey{\chapterDtestaaad}{c\langselectkey}{cv}{c1}{chapterDtestaaad}
\DTLgetvalueforkey{\chapterDtestaaae}{c\langselectkey}{cv}{c1}{chapterDtestaaae}
\DTLgetvalueforkey{\chapterDtestaaaf}{c\langselectkey}{cv}{c1}{chapterDtestaaaf}
\DTLgetvalueforkey{\chapterDtestaaag}{c\langselectkey}{cv}{c1}{chapterDtestaaag}
\DTLgetvalueforkey{\chapterDtestaaah}{c\langselectkey}{cv}{c1}{chapterDtestaaah}
\DTLgetvalueforkey{\chapterDtestaaai}{c\langselectkey}{cv}{c1}{chapterDtestaaai}
\DTLgetvalueforkey{\chapterDtestaaaj}{c\langselectkey}{cv}{c1}{chapterDtestaaaj}
\DTLgetvalueforkey{\chapterDtestaaak}{c\langselectkey}{cv}{c1}{chapterDtestaaak}
\DTLgetvalueforkey{\chapterDtestaaal}{c\langselectkey}{cv}{c1}{chapterDtestaaal}
\DTLgetvalueforkey{\chapterDtestaaam}{c\langselectkey}{cv}{c1}{chapterDtestaaam}
\DTLgetvalueforkey{\chapterDtestaaan}{c\langselectkey}{cv}{c1}{chapterDtestaaan}
\DTLgetvalueforkey{\chapterDtestaaao}{c\langselectkey}{cv}{c1}{chapterDtestaaao}
\DTLgetvalueforkey{\chapterDtestaaap}{c\langselectkey}{cv}{c1}{chapterDtestaaap}
\DTLgetvalueforkey{\chapterDtestaaaq}{c\langselectkey}{cv}{c1}{chapterDtestaaaq}
\DTLgetvalueforkey{\chapterDtestaaar}{c\langselectkey}{cv}{c1}{chapterDtestaaar}
\DTLgetvalueforkey{\chapterDtestaaas}{c\langselectkey}{cv}{c1}{chapterDtestaaas}
\DTLgetvalueforkey{\chapterDtestaaat}{c\langselectkey}{cv}{c1}{chapterDtestaaat}
\DTLgetvalueforkey{\chapterDtestaaau}{c\langselectkey}{cv}{c1}{chapterDtestaaau}
\DTLgetvalueforkey{\chapterDtestaaav}{c\langselectkey}{cv}{c1}{chapterDtestaaav}
\DTLgetvalueforkey{\chapterDtestaaaw}{c\langselectkey}{cv}{c1}{chapterDtestaaaw}
\DTLgetvalueforkey{\chapterDtestaaax}{c\langselectkey}{cv}{c1}{chapterDtestaaax}
\DTLgetvalueforkey{\chapterDtestaaay}{c\langselectkey}{cv}{c1}{chapterDtestaaay}
\DTLgetvalueforkey{\chapterDtestaaaz}{c\langselectkey}{cv}{c1}{chapterDtestaaaz}
\DTLgetvalueforkey{\chapterDtestaaba}{c\langselectkey}{cv}{c1}{chapterDtestaaba}
\DTLgetvalueforkey{\chapterDtestaabb}{c\langselectkey}{cv}{c1}{chapterDtestaabb}
\DTLgetvalueforkey{\chapterDtestaabc}{c\langselectkey}{cv}{c1}{chapterDtestaabc}
\DTLgetvalueforkey{\chapterDtestaabd}{c\langselectkey}{cv}{c1}{chapterDtestaabd}
\DTLgetvalueforkey{\chapterDtestaabe}{c\langselectkey}{cv}{c1}{chapterDtestaabe}
\DTLgetvalueforkey{\chapterDtestaabf}{c\langselectkey}{cv}{c1}{chapterDtestaabf}
\DTLgetvalueforkey{\chapterDtestaabg}{c\langselectkey}{cv}{c1}{chapterDtestaabg}
\DTLgetvalueforkey{\chapterDtestaabh}{c\langselectkey}{cv}{c1}{chapterDtestaabh}
\DTLgetvalueforkey{\chapterDtestaabi}{c\langselectkey}{cv}{c1}{chapterDtestaabi}
\DTLgetvalueforkey{\chapterDtestaabj}{c\langselectkey}{cv}{c1}{chapterDtestaabj}
\DTLgetvalueforkey{\chapterDtestaabk}{c\langselectkey}{cv}{c1}{chapterDtestaabk}
\DTLgetvalueforkey{\chapterDtestaabl}{c\langselectkey}{cv}{c1}{chapterDtestaabl}
\DTLgetvalueforkey{\chapterDtestaabm}{c\langselectkey}{cv}{c1}{chapterDtestaabm}
\DTLgetvalueforkey{\chapterDtestaabn}{c\langselectkey}{cv}{c1}{chapterDtestaabn}
\DTLgetvalueforkey{\chapterDtestaabo}{c\langselectkey}{cv}{c1}{chapterDtestaabo}
\DTLgetvalueforkey{\chapterDtestaabp}{c\langselectkey}{cv}{c1}{chapterDtestaabp}
\DTLgetvalueforkey{\chapterDtestaabq}{c\langselectkey}{cv}{c1}{chapterDtestaabq}
\DTLgetvalueforkey{\chapterDtestaabr}{c\langselectkey}{cv}{c1}{chapterDtestaabr}
\DTLgetvalueforkey{\chapterDtestaabs}{c\langselectkey}{cv}{c1}{chapterDtestaabs}
\DTLgetvalueforkey{\chapterDtestaabt}{c\langselectkey}{cv}{c1}{chapterDtestaabt}
\DTLgetvalueforkey{\chapterDtestaabu}{c\langselectkey}{cv}{c1}{chapterDtestaabu}
\DTLgetvalueforkey{\chapterDtestaabv}{c\langselectkey}{cv}{c1}{chapterDtestaabv}
\DTLgetvalueforkey{\chapterDtestaabw}{c\langselectkey}{cv}{c1}{chapterDtestaabw}
\DTLgetvalueforkey{\chapterDtestaabx}{c\langselectkey}{cv}{c1}{chapterDtestaabx}
\DTLgetvalueforkey{\chapterDtestaaby}{c\langselectkey}{cv}{c1}{chapterDtestaaby}
\DTLgetvalueforkey{\chapterDtestaabz}{c\langselectkey}{cv}{c1}{chapterDtestaabz}
\DTLgetvalueforkey{\chapterDtestaaca}{c\langselectkey}{cv}{c1}{chapterDtestaaca}
\DTLgetvalueforkey{\chapterDtestaacb}{c\langselectkey}{cv}{c1}{chapterDtestaacb}
\DTLgetvalueforkey{\chapterDtestaacc}{c\langselectkey}{cv}{c1}{chapterDtestaacc}
\DTLgetvalueforkey{\chapterDtestaacd}{c\langselectkey}{cv}{c1}{chapterDtestaacd}
\DTLgetvalueforkey{\chapterDtestaace}{c\langselectkey}{cv}{c1}{chapterDtestaace}
\DTLgetvalueforkey{\chapterDtestaacf}{c\langselectkey}{cv}{c1}{chapterDtestaacf}
\DTLgetvalueforkey{\chapterDtestaacg}{c\langselectkey}{cv}{c1}{chapterDtestaacg}
\DTLgetvalueforkey{\chapterDtestaach}{c\langselectkey}{cv}{c1}{chapterDtestaach}
\DTLgetvalueforkey{\chapterDtestaaci}{c\langselectkey}{cv}{c1}{chapterDtestaaci}
\DTLgetvalueforkey{\chapterDtestaacj}{c\langselectkey}{cv}{c1}{chapterDtestaacj}
\DTLgetvalueforkey{\chapterDtestaack}{c\langselectkey}{cv}{c1}{chapterDtestaack}
\DTLgetvalueforkey{\chapterDtestaacl}{c\langselectkey}{cv}{c1}{chapterDtestaacl}
\DTLgetvalueforkey{\chapterDtestaacm}{c\langselectkey}{cv}{c1}{chapterDtestaacm}
\DTLgetvalueforkey{\chapterDtestaacn}{c\langselectkey}{cv}{c1}{chapterDtestaacn}
\DTLgetvalueforkey{\chapterDtestaaco}{c\langselectkey}{cv}{c1}{chapterDtestaaco}
\DTLgetvalueforkey{\chapterDtestaacp}{c\langselectkey}{cv}{c1}{chapterDtestaacp}
\DTLgetvalueforkey{\chapterDtestaacq}{c\langselectkey}{cv}{c1}{chapterDtestaacq}
\DTLgetvalueforkey{\chapterDtestaacr}{c\langselectkey}{cv}{c1}{chapterDtestaacr}
\DTLgetvalueforkey{\chapterDtestaacs}{c\langselectkey}{cv}{c1}{chapterDtestaacs}
\DTLgetvalueforkey{\chapterDtestaact}{c\langselectkey}{cv}{c1}{chapterDtestaact}
\DTLgetvalueforkey{\chapterDtestaacu}{c\langselectkey}{cv}{c1}{chapterDtestaacu}
\DTLgetvalueforkey{\chapterDtestaacv}{c\langselectkey}{cv}{c1}{chapterDtestaacv}
\DTLgetvalueforkey{\chapterDtestaacw}{c\langselectkey}{cv}{c1}{chapterDtestaacw}
\DTLgetvalueforkey{\chapterDtestaacx}{c\langselectkey}{cv}{c1}{chapterDtestaacx}
\DTLgetvalueforkey{\chapterDtestaacy}{c\langselectkey}{cv}{c1}{chapterDtestaacy}
\DTLgetvalueforkey{\chapterDtestaacz}{c\langselectkey}{cv}{c1}{chapterDtestaacz}
\DTLdeletedb{cv}
\end{filecontents}
\begin{filecontents*}{cvtestdatabase.csv}
LANGID;CATA;CATB;MIN;MAX;ADDA;ADDB;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18
Langaugecode;SYSTEM;;2;3;;;DE;EN;;;;;;;;;;;;;;;;
chapterAtestaaaa;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterAtestaaab;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterAtestaaac;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterAtestaaad;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterAtestaaae;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterAtestaaaf;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterAtestaaag;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterAtestaaah;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaaa;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaab;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaac;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaad;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaae;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaaf;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaag;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaah;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaai;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaaj;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaak;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaal;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaam;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaan;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaao;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaap;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaaq;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaar;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaas;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaat;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterBtestaaau;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaaa;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaab;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaac;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaad;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaae;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaaf;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaag;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaah;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaai;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaaj;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaak;;;3;10;;;GER;EN;;;;;;;;;;;;;;;; 
chapterCtestaaal;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaam;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaan;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaao;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaap;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaaq;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaar;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaas;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaat;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaau;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaav;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaaw;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaax;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaay;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaaz;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaaba;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaabb;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaabc;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaabd;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaabe;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterCtestaabf;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaaa;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaab;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaac;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaad;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaae;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaaf;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaag;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaah;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaai;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaaj;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaak;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaal;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaam;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaan;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaao;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaap;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaaq;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaar;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaas;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaat;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaau;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaav;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaaw;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaax;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaay;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaaz;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaba;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabb;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabc;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabd;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabe;;;3;10;;;GER;EN;;;;;;;;;;;;;;;; 
chapterDtestaabf;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabg;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabh;;;3;10;;;GER;EN;;;;;;;;;;;;;;;; 
chapterDtestaabi;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabj;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabk;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabl;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabm;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabn;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabo;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacd;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaace;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabp;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabq;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabr;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabs;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabt;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabu;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabv;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabw;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabx;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaby;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaabz;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaca;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacb;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacc;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacf;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacg;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaach;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaci;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacj;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaack;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacl;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacm;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacn;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaaco;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacp;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacq;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacr;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacs;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaact;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacu;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacv;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacw;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacx;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacy;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
chapterDtestaacz;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
\end{filecontents*}

% Comment the following lines (just before test) and uncomment hyperref and filesize will be small. 
% Comment hyperref and uncomment all the following lines and the filesize will be small.
% Uncomment hyperref and all the following lines and the filesize will be big.

    \providecommand{\hspce}{\,}
    \FPupn{langselect}{1}
    \DTLsetseparator{;}
    \FPupn{langselectkey}{0}
    \input{dbload}

test

\end{document}

Respuesta1

Algunos de los comandos de usuario de alto nivel proporcionados por datatoolno son tan eficientes como los comandos de usuario de nivel inferior y \DTLgetvalueforkeyes uno de esos casos, ya que se utiliza internamente \DTLforeach*para encontrar el valor requerido en la base de datos. Esto no supone un gran problema para el uso ocasional con bases de datos pequeñas, pero para un uso repetido y para bases de datos más grandes, es mejor utilizar los comandos más avanzados.

Hay dos problemas principales con el uso repetido de \DTLforeachen este tipo de contexto. El primero es el tiempo adicional que lleva crear el documento y el segundo es el uso repetido de \refstepcounter. Sospecho que es el segundo de estos dos el que hace que el tamaño del archivo aumente a medida que hyperrefse insertan anclajes de PDF. Este mecanismo se proporciona para \DTLforeachpermitir la referencia cruzada de filas al iterar sobre la base de datos (por ejemplo, mostrar el contenido de la base de datos como una tabla).

Considere esta versión reducida de su MWE:

\documentclass{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{datatool}
\usepackage{filecontents}
\usepackage{hyperref}

\begin{filecontents*}{cvtestdatabase.csv}
LANGID;CATA;CATB;MIN;MAX;ADDA;ADDB;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18
Languagecode;SYSTEM;;2;3;;;DE;EN;;;;;;;;;;;;;;;;
chapterAtestaaaa;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
\end{filecontents*}

\begin{document}
\providecommand{\hspce}{\,}
\FPupn{langselect}{1}
\DTLsetseparator{;}
\FPupn{langselectkey}{0}

\DTLloadrawdb[keys={c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,c21,c22,c23,c24,c25}]{cv}{./cvtestdatabase.csv}
\FPupn{langselectkey}{langselect 7 + 0 round}
\DTLgetvalueforkey{\Languagecode}{c\langselectkey}{cv}{c1}{Languagecode}
\DTLgetvalueforkey{\chapterAtestaaaa}{c\langselectkey}{cv}{c1}{chapterAtestaaaa}

Languagecode: \Languagecode.
test command: \chapterAtestaaaa.
\end{document}

Esto da como resultado que \refstepcounterse utilice cinco veces. Si amplía esto, se producirán muchos anclajes de PDF innecesarios que rellenan el documento.

Aquí hay una alternativa que utiliza los comandos de nivel inferior que no realizan ninguna iteración (consulte la sección 5.11.1 del datatoolmanual del usuario):

\documentclass{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{datatool}
\usepackage{filecontents}
\usepackage{hyperref}

\begin{filecontents*}{cvtestdatabase.csv}
LANGID;CATA;CATB;MIN;MAX;ADDA;ADDB;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18
Languagecode;SYSTEM;;2;3;;;DE;EN;;;;;;;;;;;;;;;;
chapterAtestaaaa;;;3;10;;;GER;EN;;;;;;;;;;;;;;;;
\end{filecontents*}

\begin{document}
\providecommand{\hspce}{\,}
\FPupn{langselect}{1}
\DTLsetseparator{;}
\FPupn{langselectkey}{0}

\DTLloadrawdb[keys={c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,c21,c22,c23,c24,c25}]{cv}{./cvtestdatabase.csv}
\FPupn{langselectkey}{langselect 7 + 0 round}

% Get the column index for the column labelled ``c1''
\DTLgetcolumnindex{\columnidx}{cv}{c1}%
% Get the row where that column matches the given text:
\DTLgetrowindex{\rowidx}{cv}{\columnidx}{Languagecode}%
% Set it as the current row
\dtlgetrow{cv}{\rowidx}%
% Get the index for the required column
\DTLgetcolumnindex{\columnidx}{cv}{c\langselectkey}%
\dtlgetentryfromcurrentrow{\LanguageCode}{\columnidx}

Result: \LanguageCode.

\end{document}

Puede resumir esas líneas en un comando para simplificar las cosas. Por ejemplo:

\newcommand{\fetchinfo}[2]{%
   % Get the column index for the column labelled ``c1''
   \DTLgetcolumnindex{\columnidx}{cv}{c1}%
   % Get the row where that column matches the given text:
   \DTLgetrowindex{\rowidx}{cv}{\columnidx}{#2}%
   % Set it as the current row
   \dtlgetrow{cv}{\rowidx}%
   % Get the index for the required column
   \DTLgetcolumnindex{\columnidx}{cv}{c\langselectkey}%
   \dtlgetentryfromcurrentrow{#1}{\columnidx}%
}

Entonces puedes usarlo así:

\fetchinfo{\LanguageCode}{Languagecode}

El segundo de los dos documentos de prueba en este ejemplo (el que usa los comandos de bajo nivel) es 867 bytes más pequeño que el primero (el que usa \DTLgetvalueforkey).

Editar:

Me doy cuenta de que tuve una búsqueda adicional en el primer ejemplo que no tuve en el segundo, por lo que no es una buena comparación. Aquí hay un nuevo conjunto de pruebas que producen el mismo texto. El ejemplo se ha reducido para mayor claridad.

Prueba 1

hyperrefy \DTLgetvalueforkey:

\documentclass{scrreprt}

\usepackage{datatool}
\usepackage{filecontents}
\usepackage{hyperref}

\begin{filecontents*}{cvtestdatabase.csv}
LANGID,1
Languagecode,DE
chapterAtestaaaa,GER
\end{filecontents*}

\begin{document}

\DTLloadrawdb[keys={c1,c2}]{cv}{./cvtestdatabase.csv}
\DTLgetvalueforkey{\Languagecode}{c2}{cv}{c1}{Languagecode}
\DTLgetvalueforkey{\chapterAtestaaaa}{c2}{cv}{c1}{chapterAtestaaaa}

Languagecode: \Languagecode.
test command: \chapterAtestaaaa.
\end{document}

El tamaño del archivo del PDF resultante ( test.pdf):

ls -l test.pdf
-rw-rw-r--. 1 nlct nlct 14178 Nov 18 09:58 test.pdf

Prueba 2:

No hyperrefy \DTLgetvalueforkey. Esto es lo mismo que el anterior pero con una línea comentada:

\documentclass{scrreprt}

\usepackage{datatool}
\usepackage{filecontents}
%\usepackage{hyperref}

\begin{filecontents*}{cvtestdatabase.csv}
LANGID,1
Languagecode,DE
chapterAtestaaaa,GER
\end{filecontents*}

\begin{document}

\DTLloadrawdb[keys={c1,c2}]{cv}{./cvtestdatabase.csv}
\DTLgetvalueforkey{\Languagecode}{c2}{cv}{c1}{Languagecode}
\DTLgetvalueforkey{\chapterAtestaaaa}{c2}{cv}{c1}{chapterAtestaaaa}

Languagecode: \Languagecode.
test command: \chapterAtestaaaa.
\end{document}

Tamaño del archivo:

ls -l test.pdf
-rw-rw-r--. 1 nlct nlct 13865 Nov 18 10:05 test.pdf

Prueba 3:

Como la Prueba 1, pero el código de búsqueda se ha movido al preámbulo:

\documentclass{scrreprt}

\usepackage{datatool}
\usepackage{filecontents}
\usepackage{hyperref}

\begin{filecontents*}{cvtestdatabase.csv}
LANGID,1
Languagecode,DE
chapterAtestaaaa,GER
\end{filecontents*}

\DTLloadrawdb[keys={c1,c2}]{cv}{./cvtestdatabase.csv}
\DTLgetvalueforkey{\Languagecode}{c2}{cv}{c1}{Languagecode}
\DTLgetvalueforkey{\chapterAtestaaaa}{c2}{cv}{c1}{chapterAtestaaaa}

\begin{document}

Languagecode: \Languagecode.
test command: \chapterAtestaaaa.
\end{document}

Tamaño del archivo:

ls -l test.pdf
-rw-rw-r--. 1 nlct nlct 14175 Nov 18 10:07 test.pdf

Prueba 4:

hyperrefy comandos de usuario de bajo nivel.

\documentclass{scrreprt}

\usepackage{datatool}
\usepackage{filecontents}
\usepackage{hyperref}

\begin{filecontents*}{cvtestdatabase.csv}
LANGID,1
Languagecode,DE
chapterAtestaaaa,GER
\end{filecontents*}

\begin{document}

\DTLloadrawdb[keys={c1,c2}]{cv}{./cvtestdatabase.csv}

\newcommand{\fetchinfo}[2]{%
   % Get the column index for the column labelled ``c1''
   \DTLgetcolumnindex{\columnidx}{cv}{c1}%
   % Get the row where that column matches the given text:
   \DTLgetrowindex{\rowidx}{cv}{\columnidx}{#2}%
   % Set it as the current row
   \dtlgetrow{cv}{\rowidx}%
   % Get the index for the required column
   \DTLgetcolumnindex{\columnidx}{cv}{c2}%
   \dtlgetentryfromcurrentrow{#1}{\columnidx}%
}

\fetchinfo{\LanguageCode}{Languagecode}
\fetchinfo{\chapterAtestaaaa}{chapterAtestaaaa}

Languagecode: \LanguageCode.
test command: \chapterAtestaaaa.

\end{document}

Tamaño del archivo:

ls -l test2.pdf 
-rw-rw-r--. 1 nlct nlct 14084 Nov 18 10:12 test2.pdf

Prueba 5:

Sin hyperrefcomandos de usuario y de bajo nivel. Esto es lo mismo que el anterior pero con la \usepackage{hyperref}línea comentada.

Tamaño del archivo:

ls -l test2.pdf
-rw-rw-r--. 1 nlct nlct 13865 Nov 18 10:13 test2.pdf

Prueba 6:

hyperrefy comandos de bajo nivel con búsqueda realizada en el preámbulo. Esto es lo mismo que la Prueba 4 pero la \begin{document}línea se ha movido más hacia abajo.

\documentclass{scrreprt}

\usepackage{datatool}
\usepackage{filecontents}
\usepackage{hyperref}

\begin{filecontents*}{cvtestdatabase.csv}
LANGID,1
Languagecode,DE
chapterAtestaaaa,GER
\end{filecontents*}

\DTLloadrawdb[keys={c1,c2}]{cv}{./cvtestdatabase.csv}

\newcommand{\fetchinfo}[2]{%
   % Get the column index for the column labelled ``c1''
   \DTLgetcolumnindex{\columnidx}{cv}{c1}%
   % Get the row where that column matches the given text:
   \DTLgetrowindex{\rowidx}{cv}{\columnidx}{#2}%
   % Set it as the current row
   \dtlgetrow{cv}{\rowidx}%
   % Get the index for the required column
   \DTLgetcolumnindex{\columnidx}{cv}{c2}%
   \dtlgetentryfromcurrentrow{#1}{\columnidx}%
}

\fetchinfo{\LanguageCode}{Languagecode}
\fetchinfo{\chapterAtestaaaa}{chapterAtestaaaa}

\begin{document}

Languagecode: \LanguageCode.
test command: \chapterAtestaaaa.

\end{document}

Tamaño del archivo:

ls -l test2.pdf
-rw-rw-r--. 1 nlct nlct 14084 Nov 18 10:16 test2.pdf

Resumen:

  • Prueba 1: 14178 ( hyperref, nivel alto, búsqueda en document)
  • Prueba 2: 13865 (no hyperref, nivel alto, búsqueda en document)
  • Prueba 3: 14175 ( hyperref, nivel alto, búsqueda en el preámbulo)
  • Prueba 4: 14084 ( hyperref, nivel bajo, búsqueda en document)
  • Prueba 5: 13865 (no hyperref, nivel bajo, búsqueda en document)
  • Prueba 6: 14084 ( hyperref, nivel bajo, búsqueda en el preámbulo)

No hay diferencia en el tamaño del archivo con la Prueba 4 y la Prueba 6, pero hay una ligera diferencia en el tamaño del archivo con la Prueba 1 y la Prueba 3. Supongo que eso hyperrefno crea anclajes \refstepcountersi ocurre en el preámbulo (lo cual tiene sentido) , por lo que esto tendría en cuenta los diferentes tamaños de archivo en la Prueba 1 y la Prueba 3.

La diferencia en el tamaño del archivo con la Prueba 2 y la Prueba 3 (y con la Prueba 5 y la Prueba 6 o 4) se debe a la información adicional relacionada con el PDF que hyperrefse agrega.

La diferencia en el tamaño del archivo con la Prueba 3 y la Prueba 6 es más interesante, pero no sé el motivo, por lo que obviamente hay algo más que \refstepcounteren el comando de alto nivel que contribuyó al tamaño adicional.

Edición 2:

Pruebas adicionales para investigar el aumento del tamaño del archivo con \refstepcounter:

\refstepcounteren documentel ambiente:

\documentclass{article}

\usepackage{hyperref}

\newcounter{test}

\begin{document}
\loop \refstepcounter{test} \ifnum\value{test}<10\repeat

\thetest.
\end{document}

Tamaño de archivo: 10733 bytes.

\refstepcounteren el preámbulo:

\documentclass{article}

\usepackage{hyperref}

\newcounter{test}

\loop \refstepcounter{test} \ifnum\value{test}<10\repeat

\begin{document}
\thetest.
\end{document}

Tamaño de archivo: 10732 bytes.

\refstepcounterreemplazadas con \stepcounter:

\documentclass{article}

\usepackage{hyperref}

\newcounter{test}

\loop \stepcounter{test} \ifnum\value{test}<10\repeat

\begin{document}
\thetest.
\end{document}

Tamaño de archivo: 10581 bytes.

Entonces, parece que incluso si \refstepcounterse usa en el preámbulo, todavía aumenta el tamaño del PDF (en comparación con \stepcounter), aunque no tanto como cuando se usa en el archivo document.

Respuesta2

si agregas

 \pdfcompresslevel=0

En la parte superior del documento aparecen tamaños de archivo de 3129555 y 13642 con y sin hiperreferencia. Mirando el pdf, la primera diferencia obvia son 26368 apariciones de la misma línea.

/D [3 0 R /XYZ 88.291 795.961 null]

que hasta donde yo sé es establecer un destino con nombre en esas coordenadas. Eso por sí solo representa 1000000 de la diferencia en la versión sin comprimir.

Es demasiado tarde para buscar más, pero eso puede darte un lugar donde buscar (o Heiko podría pasar y explicar lo que está pasando :-)

información relacionada