헤더에 두꺼운 표 줄을 만들기 위해 {tabu}를 사용하면 오류가 발생합니다.

헤더에 두꺼운 표 줄을 만들기 위해 {tabu}를 사용하면 오류가 발생합니다.

모든 페이지의 헤더에서 페이지 번호 옆에 두꺼운 수직선을 추가하고 싶습니다. 나는 작은 테이블을 만들고 거기에 선을 추가하기로 결정했습니다. {tabu}테이블 테두리의 두께를 정의하는 옵션(패키지의 일부)을 추가하기 전까지는 잘 작동합니다 . 많은 오류를 생성하는 코드는 다음과 같습니다.

\documentclass{book}

\usepackage{fancyhdr}
\usepackage{tabu}
\begin{document}
\pagestyle{fancy}
\fancyhead{}
\fancyfoot{}
\renewcommand{\headrulewidth}{0pt}%no top ruler
\fancyheadoffset{0.8 cm}
\fancyhead[RO]{\begin{tabu}{|[2pt]c}\bfseries\thepage \\ ~ \end{tabu}}
\fancyhead[LE]{\begin{tabu}{c|[2pt]}\bfseries\thepage \\ ~ \end{tabu}}
\headheight=24pt
~
\newpage
~
\end{document}

표를 본문(헤더가 아닌)에 넣으면 정상적으로 나옵니다.

\begin{tabu}{|[2pt]c}\bfseries\thepage \\ ~ \end{tabu}

줄 을 제거해 [2pt]도 문제가 없습니다. 그럼에도 불구하고 생성된 오류에서 무엇이 잘못되었는지 알아낼 수 없습니다. 예를 들어 첫 번째 오류는 다음과 같습니다.

!missing number, treated as zero

이것을 더 큰 프로젝트의 일부로 컴파일하면 컴파일 프로세스가 완전히 중단됩니다!

내 질문은 다음과 같습니다. 이 코드가 헤더 내부에서 작동하지 않는 이유는 무엇이며 원하는 효과를 얻으려면 어떻게 변경해야 합니까?

답변1

여기에 이미지 설명을 입력하세요

불행하게도 tabu패키지는 라텍스와 호환되지 않는 경우가 많습니다. 특히 >구문을 변경하려는 불행한 결정으로 인해 활성 문자에 문제가 발생합니다.

\documentclass{book}

\usepackage{fancyhdr}
\usepackage{tabu}



\pagestyle{fancy}
\fancyhead{}
\fancyfoot{}
\renewcommand{\headrulewidth}{0pt}%no top ruler
\fancyheadoffset{0.8 cm}
\makeatletter
\fancyhead[RO]{\let\@activechar@info\@gobble\begin{tabu}{|[2pt]c}\bfseries\thepage \tabularnewline ~ \end{tabu}}
\fancyhead[LE]{\let\@activechar@info\@gobble\begin{tabu}{c|[2pt]}\bfseries\thepage \tabularnewline ~ \end{tabu}}
\makeatother
\headheight=24pt
\begin{document}
~ 
\newpage
~
\end{document}

답변2

큰 망치를 사용하고 계십니다. 규칙을 사용하고 정렬을 주의 깊게 수행하면 더 나은 측정을 얻을 수 있습니다.

가능성은 다음과 같습니다( showframe옵션과 geometry패키지는 예시용으로만 사용됨).

\documentclass{book}

%% the following two packages are just for the example
\usepackage[pass,showframe]{geometry}
\usepackage{lipsum}
%%

\usepackage{calc}
\usepackage{fancyhdr}

\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}%no top ruler
\fancyhf{}
\fancyhead[RO]{\rightpage}
\fancyhead[LE]{\leftpage}

\setlength{\headheight}{24pt}

\newcommand{\digitheight}{\fontcharht\font`0 }
\newcommand{\rightpage}{\mypagenumber{\ }{l}{\ \ \bfseries\thepage}}
\newcommand{\leftpage}{\mypagenumber{\bfseries\thepage\ \ }{r}{\ }}
% Arguments of \mypagenumber:
% #1: tokens to be set at the left of the bar
% #2: position of the bar (use l for the right header, r for the left)
% #3: tokens to be set at the right of the bar
\newcommand{\mypagenumber}[3]{%
  \raisebox{\ht\strutbox-\digitheight}{%
    \makebox[0pt][#2]{%
      \bfseries
      #1%
      \vrule depth \dimexpr 24pt - \digitheight\relax width 2pt
      #3}%
  }%
}

\begin{document}

\lipsum[1-12]
\end{document}

페이지 1

여기에 이미지 설명을 입력하세요

2 쪽

여기에 이미지 설명을 입력하세요

프레임 없는 페이지 1

여기에 이미지 설명을 입력하세요

관련 정보