-package를 사용하여 테이블로 만들고 싶은 .csv 파일이 있습니다 datatool
. .csv 파일은 다음과 같이 구성되어 있지 않습니다.
푸&바&푸바
여러 줄이 함께 그룹화되고 각 그룹의 첫 번째 줄에만 항목이 포함됩니다.푸그리고술집, 나머지는푸바. 항목에는 수학이 포함될 수 있습니다.
\ifdefempty
from -package를 사용하여 그룹의 첫 번째 줄을 확인 etoolbox
하고 인쇄해 보았습니다 \hline
.술집비어 있지 않지만 오류 메시지가 나타납니다.
MWP
\documentclass{article}
\usepackage{etoolbox}
\usepackage{tabu}
\usepackage{longtable}
\usepackage{datatool}
\DTLloaddb[keys={foo,bar,foobar}]{mydatabase}{testbase.csv}
\newcommand{\printcommand}[2][]{%
\begin{longtabu}to\textwidth{@{}llX@{}}
\firsthline
Foo&Bar&Foobar\\
\hline\endhead
\DTLforeach*{#2}{\foo=foo,\bar=bar,\foobar=foobar}{%
% \ifdefempty{\bar}{}{\hline}%
\foo&\bar&\foobar\\
}
\end{longtabu}
}
\begin{document}
foobar
\printcommand{mydatabase}
\end{document}
외모 testbase.csv
는 이렇다
myfoo,mybar,myfoobar
17,barbar,bar 1
,,bar 234
,,barbary
23,ba ba ba,\(a^2+b^2=c^2\)
,,\emph{barfoo}
,,foofoofoo
이렇게 컴파일하면 오류가 발생하지 않지만 주석 처리된 줄의 주석 처리를 제거하면 오류가 발생 misplaced \noalin
합니다 misplaced \omit
.
longtabu
로 바꾸고 tabu
undefine 을 제거 하면 \endhead
더 많은 오류가 발생합니다.
어떻게 하면 내가 원하는 대로 이 작업을 수행할 수 있나요?
답변1
귀하의 오류는 매우 간단합니다. \hline
이전 줄을 끝내지 않고 를 배치하려고 합니다 . (루프 유무에 관계없이) 작동하지 않습니다. 노력하다
\DTLforeach*{#2}{\foo=foo,\bar=bar,\foobar=foobar}{%
\foo&\bar&\foobar\\
\ifdefempty{\bar}{}{\hline}%
}
그러면 다음과 같이 컴파일되는 것을 볼 수 있습니다.
아마도 당신은 이것이 당신이 원하는 것이 아니라고 말할 것입니다. 알아요. 하지만 귀하의 수표는 이전에 hline을 출력하는 데 작동하지 않습니다. 이전 줄이 다음과 같이 끝나는지 확인해야 합니다 \\
.