datatool에서 홀수인 경우

datatool에서 홀수인 경우

주제를 따르다tcolorbox: 홀수 및 짝수 페이지에 대한 특정 너비 및 높이 설정

최소한의 코드:

\documentclass{article}
\usepackage{datatool}
\usepackage{filecontents}
\usepackage[strict]{changepage}

\begin{filecontents*}{test2.csv}
Acol, Bcol, NoCol
Ax,Bx,1
Ay,By,3
A1,B22,2
A2,B44,4
A3,B11,5
\end{filecontents*}

\DTLloaddb{mydata}{test2.csv}

\newcommand*{\pageDependent}{\ifoddpage 5cm\else 10cm\fi\relax}

\begin{document}

\DTLforeach*{mydata}{\A=Acol,\B=Bcol}%
{%
 \A \checkoddpage\hspace{\pageDependent} \B
 \newpage
}%

\end{document}

어떻게 바꿀 수 있나요?

\newcommand*{\pageDependent}{\ifoddpage 5cm\else 10cm\fi\relax}

그리고 \checkoddpage{\pageDependent}...

Datatools의 NoCol 규칙 아래에 새로운 내용이 추가되었습니다.

  1. Nocol = 홀수이면 \pageDependent = 5cm

  2. Nocol = 짝수이면 \pageDependent = 10cm

감사해요

답변1

나는 다음을 제안합니다:

\RequirePackage{filecontents}
\begin{filecontents*}{test2.csv}
Acol, Bcol, NoCol
Ax,Bx,1
Ay,By,3
A1,B22,2
A2,B44,4
A3,B11,5
\end{filecontents*}

\documentclass{article}
\usepackage{datatool}
\DTLloaddb{mydata}{test2.csv}

\makeatletter
\newcommand*{\valueDependent}[1]{%
  \ifodd #1
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\makeatother

\begin{document}

\DTLforeach*{mydata}{\A=Acol, \B=Bcol, \No=NoCol}%
{%
 \A
 \hspace{\valueDependent{\No}{5cm}{10cm}}%
 \B
 \par
}%

\end{document}

스크린샷

이는 다음과 같은 이유로 작동합니다.

  • \hspace{something}하다 \hskip something\relax;

  • 명령 을 소화한 후 \hskipTeX는 〈접착제〉를 가질 때까지 토큰을 확장합니다.

  • 충분한 확장 후에 내 \valueDependent매크로는 〈glue〉를 생성합니다. 왜냐하면 TeX 프리미티브 도 〈number〉를 가질 때까지 토큰을 확장하기 때문입니다(여기서 와 같이 \ifodd로 정의된 열 매크로는 확장 가능합니다).datatool\No

두 길이를 내부에 하드코딩하려는 경우 다음을 \valueDependent사용할 수 있습니다.

\RequirePackage{filecontents}
\begin{filecontents*}{test2.csv}
Acol, Bcol, NoCol
Ax,Bx,1
Ay,By,3
A1,B22,2
A2,B44,4
A3,B11,5
\end{filecontents*}

\documentclass{article}
\usepackage{datatool}
\DTLloaddb{mydata}{test2.csv}

\newcommand*{\valueDependent}[1]{%
  \ifodd #1 5cm \else 10cm \fi
}

\begin{document}

\DTLforeach*{mydata}{\A=Acol, \B=Bcol, \No=NoCol}%
{%
 \A
 \hspace{\valueDependent{\No}}%
 \B
 \par
}%

\end{document}

출력은 이전 스크린샷과 동일합니다.

관련 정보