tcolorbox : 지오메트리 패키지에 전달하기 전에 헤더 높이를 계산할 때 \ settototalheight 오류

Nov 28 2020

이 답변에 이어 다음이 컴파일되지 않고이 오류를 제공하는 이유를 알고 싶습니다.

! 정의되지 않은 제어 순서. \ tcb @ startbox ... x} {\ tcb @ w @ upper} \ tcb @ lua @ color {tcbcolupper} \ kvtcb @ fontup ...

\documentclass{exam}
\usepackage{graphicx}
\usepackage[xparse,breakable,raster,skins]{tcolorbox}
\usepackage{calc}

\newcommand{\exProgram}{3\textsuperscript{rd} Year}
\newcommand{\CourseName}{Engineering}
\newcommand*{\CourseCode}{311}
\newcommand*{\exMidFinal}{Midterm}
\newcommand*{\exSemester}{Fall}

\newcommand\headerBody{%
    \begin{tcolorbox}[
        raster multicolumn = 3
        ]
        \begin{tcbitemize}[
            raster force size=false,
            raster columns=2,
            valign=bottom,
            raster equal skip = 0mm,
            blankest,
            ]
            \tcbitem[add to width = 2cm, halign = left,]
            University\\ Faculty\\
            \exProgram
            \tcbitem[add to width =-2cm, halign = right]  \includegraphics[height=20 mm]{example-image}
        \end{tcbitemize}
    \end{tcolorbox}%
    %
    \vspace{5pt}\hrule\vspace{5pt}%
    %
    \begin{tcolorbox}[left=0pt,right=0pt]
        \exMidFinal\\
        \exSemester
    \end{tcolorbox}
    \begin{tcolorbox}[before upper*=\centering]
        Course Code: \textbf{\CourseCode}
    \end{tcolorbox}
    \begin{tcolorbox}[halign=right]
        1\\
        2
    \end{tcolorbox}%
    %
    \vspace{5pt}\hrule\vspace{5pt}%
    %
    \begin{tcolorbox}[
        before upper*=\centering, equal height group=A,
        interior engine = standard,
        colback = gray,
        raster multicolumn = 3,
        top = 5pt, bottom = 5pt
        ]
        \textbf{\CourseName}
    \end{tcolorbox}%
    %
    \vspace{5pt}\hrule\vspace{5pt}%
    %
    \begin{tcolorbox}[
        before upper*=\centering,
        equal height group=A,
        raster multicolumn = 3,
        ]
        This exam contains
    \end{tcolorbox}%
}

\newcommand\headerContents{%
    \begin{minipage}{\linewidth}%
        \begin{tcbraster}[
            raster columns=3, raster rows=3,
            raster equal height = rows,
            raster every box/.style={minimum for current equal height group = 8 mm},
            valign=center,
            raster equal skip = 0mm,
            top = 0mm, bottom = 0mm,
            blankest,
            nobeforeafter,
            ]
            \headerBody%
            \vspace*{5pt}%
            \hrule%
        \end{tcbraster}%
    \end{minipage}%
}

\newlength{\headerTotalHeight}
\settototalheight\headerTotalHeight{\headerContents}


\pagestyle{headandfoot}
\firstpageheader{}{\headerContents}{}

\usepackage[
a4paper,
includehead,
top = 0mm,
headheight = \headerTotalHeight,
showframe
]{geometry}

\begin{document}
    text
\end{document}

답변

5 egreg Nov 28 2020 at 17:06

서문에있는 것을 측정해서는 안됩니다. 문서 시작시 글꼴 설정이 지연 될 수 있습니다.

올바른 장소에서 설정하십시오.

\AtBeginDocument{\settototalheight\headerTotalHeight{\headerContents}}

이제 이것이 왜 실행되었지만 지금은 실패하는지 알고 싶다면? tcolorbox.sty가능한 경우 LuaTeX 색상 관리를 활용하기위한 의 변경 사항 이 도입되었습니다. 이를 위해서는 \tcb@lua@color적절한 방식으로 정의해야 하며 패키지 작성자는 시작 문서에서 수행하도록 선택했습니다.

이는 \tcb@lua@color오류가 발생한 문서 서문에서 의 의미를 아직 사용할 수 없음을 의미 합니다.