파일 크기 명령 양에 따라 달라집니까?

파일 크기 명령 양에 따라 달라집니까?

이력서를 작성할 때 tex 파일을 내용과 분리하기로 결정했습니다. 로 로드하기 위해 내용을 csv 파일에 복사했습니다 datatool.

그러나 이렇게 하면 PDF 크기가 크게 늘어납니다.

  1. tex 코드로 직접 콘텐츠를 완성하세요. 크기: 101KB
  2. 콘텐츠를 csv 파일로 외부화합니다. 크기: 5.093kb.

pdflatex로 컴파일된 MWE:

\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}

답변1

에서 제공하는 일부 고급 사용자 명령은 datatool하위 수준 사용자 명령만큼 효율적이지 않으며 데이터베이스에서 필요한 값을 찾기 위해 \DTLgetvalueforkey내부적으로 사용하는 경우 중 하나입니다 . \DTLforeach*소규모 데이터베이스에서는 가끔 사용하는 경우에는 큰 문제가 되지 않지만, 반복적으로 사용하거나 대규모 데이터베이스의 경우에는 고급 명령을 사용하는 것이 좋습니다.

\DTLforeach이러한 유형의 문맥에서 of를 반복적으로 사용하는 데에는 두 가지 주요 문제가 있습니다 . 첫 번째는 문서를 작성하는 데 걸리는 추가 시간이고, 두 번째는 \refstepcounter. PDF 앵커를 삽입할 때 파일 크기가 커지는 것은 이 두 가지 중 두 번째 때문인 것 같습니다 hyperref. 이 메커니즘은 \DTLforeach데이터베이스를 반복할 때(예: 데이터베이스 내용을 테이블로 표시) 행 상호 참조를 허용하기 위해 에서 제공됩니다.

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}

결과적으로 \refstepcounter5번 사용됩니다. 이것을 확장하면 문서에 불필요한 PDF 앵커가 많이 추가됩니다.

다음은 반복을 수행하지 않는 하위 수준 명령을 사용하는 대안입니다( datatool사용자 설명서의 섹션 5.11.1 참조).

\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}

작업을 더 간단하게 만들기 위해 해당 줄을 명령으로 마무리할 수 있습니다. 예를 들어:

\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}%
}

그러면 다음과 같이 사용할 수 있습니다.

\fetchinfo{\LanguageCode}{Languagecode}

이 예의 두 테스트 문서 중 두 번째 문서(저수준 명령을 사용하는 문서)는 첫 번째 문서(를 사용하는 문서 \DTLgetvalueforkey)보다 867바이트 작습니다.

편집하다:

첫 번째 예에서는 두 번째 예에는 없었던 추가 조회가 있었으므로 좋은 비교가 아닙니다. 다음은 동일한 텍스트를 생성하는 새로운 테스트 세트입니다. 이 예는 명확성을 위해 잘렸습니다.

테스트 1

hyperref그리고 \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}

결과 PDF의 파일 크기( test.pdf):

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

테스트 2:

아니요 hyperref그리고 \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}

파일 크기:

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

테스트 3:

테스트 1과 같지만 조회 코드가 프리앰블로 이동되었습니다.

\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}

파일 크기:

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

테스트 4:

hyperref그리고 낮은 수준의 사용자 명령.

\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}

파일 크기:

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

테스트 5:

hyperref낮은 수준의 사용자 명령이 없습니다 . 위와 동일하지만 해당 \usepackage{hyperref}줄이 주석 처리되어 있습니다.

파일 크기:

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

테스트 6:

hyperref프리앰블에서 조회가 수행되는 하위 수준 명령입니다. 이는 테스트 4와 동일하지만 선이 \begin{document}더 아래로 이동했습니다.

\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}

파일 크기:

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

요약:

  • 테스트 1: 14178( hyperref, 상위 수준, 조회 document)
  • 테스트 2: 13865(없음 hyperref, 상위 수준, 조회 document)
  • 테스트 3: 14175( hyperref, 상위 수준, 서문에서 조회)
  • 테스트 4: 14084( hyperref, 하위 수준, 조회 document)
  • 테스트 5: 13865(없음 hyperref, 하위 수준, 조회 document)
  • 테스트 6: 14084( hyperref, 하위 수준, 프리앰블에서 조회)

테스트 4와 테스트 6의 파일 크기에는 차이가 없지만 테스트 1과 테스트 3의 파일 크기에는 약간의 차이가 있습니다. 프리앰블에서 발생하는 경우 hyperref앵커를 생성하지 않는다고 가정합니다(이건 말이 됩니다). \refstepcounter, 따라서 이는 테스트 1과 테스트 3의 파일 크기가 다른 것을 설명합니다.

테스트 2와 테스트 3(및 테스트 5와 테스트 6 또는 4)의 파일 크기 차이는 추가되는 추가 PDF 관련 정보 때문입니다 hyperref.

테스트 3과 테스트 6의 파일 크기 차이가 더 흥미롭지만 그 이유를 모르겠습니다. 따라서 \refstepcounter추가 크기에 기여하는 상위 수준 명령 이외의 다른 것이 분명히 있습니다.

편집 2:

다음을 사용하여 파일 크기 증가를 조사하기 위한 추가 테스트 \refstepcounter:

\refstepcounter환경 에서 document:

\documentclass{article}

\usepackage{hyperref}

\newcounter{test}

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

\thetest.
\end{document}

파일 크기: 10733바이트.

\refstepcounter전문에서:

\documentclass{article}

\usepackage{hyperref}

\newcounter{test}

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

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

파일 크기: 10732바이트.

\refstepcounter다음으로 대체됨 \stepcounter:

\documentclass{article}

\usepackage{hyperref}

\newcounter{test}

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

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

파일 크기: 10581바이트.

따라서 가 서문에 사용되더라도 에서 사용될 때만큼은 아니지만 \refstepcounterPDF 크기가 에 추가되는 것 같습니다 .\stepcounterdocument

답변2

추가하면

 \pdfcompresslevel=0

문서 상단에는 하이퍼참조가 있거나 없는 3129555 및 13642의 파일 크기가 표시됩니다. PDF를 보면 첫 번째 명백한 차이점은 동일한 줄이 26368번 발생한다는 것입니다.

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

내가 아는 한 그것은 그 좌표에 명명된 목적지를 설정하는 것입니다. 이는 압축되지 않은 버전의 차이 중 1000000을 차지합니다.

더 자세히 보기에는 너무 늦었지만 볼 수 있는 장소가 될 수 있습니다(또는 Heiko가 지나가면서 무슨 일이 일어나고 있는지 설명할 수도 있습니다:-)

관련 정보