我想在每頁頁眉中的頁碼旁邊放置一條粗垂直線。我選擇建立一個小表並向其添加該行。它工作正常,直到我添加{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}