合并 header、table 和 href 时出现问题

合并 header、table 和 href 时出现问题

我正在尝试为第一页制作一个特定的页眉,而其余页面的页眉将与第一页相同但不同。第一页和第二页的页眉如下所示(仅显示每页的顶部),其中页眉基本上是一个表格。我的第一个问题是如何将一个放在\href这个表格中。我实际上遵循了提供的说明这里但编译器不允许我使用\href。另一个问题是如何创建与第一页不同的第二个页眉。

在此处输入图片描述

这是我使用的代码。

\documentclass{article}
\usepackage[margin=1in,headheight=5\baselineskip,headsep=1\baselineskip,includehead]{geometry}
\usepackage{tabularx}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{hyperref}

\newlength{\headerwidth}
\setlength{\headerwidth}{\textwidth}
\newsavebox{\myheader}
\begin{lrbox}{\myheader}%
    \begin{minipage}[b]{\headerwidth}
    \renewcommand{\arraystretch}{1}%
    \begin{tabularx}{\headerwidth}{p{0.75\linewidth}p{0.25\linewidth}}
        {\bf FirstName LastName} & \\
        Address1 & Phone +1 (123) 456 7890 \\
        Address2 & Fax +1 (123) 456 7890\\
        Address3 & \href{mailto:[email protected]}{[email protected]}\\
    \end{tabularx}
    \end{minipage}
\end{lrbox}

\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\lhead{}
\chead{\usebox{\myheader}}
\rhead{}
\lfoot{}
\cfoot{}
\rfoot{}

\usepackage{lipsum}
\begin{document}
\lipsum[1-3]
\end{document}

答案1

\href应仅在 之后使用\begin{document}。用lrbox包围\AtBeginDocument{...}

\AtBeginDocument{%
  \begin{lrbox}{\myheader}%
    \begin{minipage}[b]{\headerwidth}
    \renewcommand{\arraystretch}{1}%
    \begin{tabularx}{\textwidth}{@{}Xl@{}}
        \textbf{FirstName LastName} & \\
        Address1 & Phone +1 (123) 456 7890 \\
        Address2 & Fax +1 (123) 456 7890\\
        Address3 & \href{mailto:[email protected]}{[email protected]}
    \end{tabularx}%
    \end{minipage}%
  \end{lrbox}%
}

请注意,我已将列定义更改为,以@{}Xl@{}避免水平盒子过满。并且我已删除\\后面的\href

在此处输入图片描述

或者,您可以使用 \newcommand\myheader{...},而不是将表格保存在 中lrbox

\documentclass{article}
\usepackage[margin=1in,headheight=5\baselineskip,headsep=1\baselineskip,includehead]{geometry}
\usepackage{tabularx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhf{}
\chead{\myheader}
\newcommand\myheader{%
    \begin{minipage}[b]{\textwidth}
    \renewcommand{\arraystretch}{1}%
    \begin{tabularx}{\linewidth}{@{}Xl@{}}
        \textbf{FirstName LastName} & \\
        Address1 & Phone +1 (123) 456 7890 \\
        Address2 & Fax +1 (123) 456 7890\\
        Address3 & \href{mailto:[email protected]}{[email protected]}
    \end{tabularx}%
    \end{minipage}%
}

\usepackage{lipsum}

\usepackage{hyperref}% normally the last package

\begin{document}
\lipsum[1-3]
\end{document}

在除第一页之外的所有页面上获取其他标题的一种可能性是创建新的页面样式firstpage并使用\thispagestyle{firstpage}

\documentclass{article}
\usepackage[margin=1in,headheight=5\baselineskip,headsep=1\baselineskip,includehead]{geometry}
\usepackage{tabularx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\chead{other pages}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
%
\fancypagestyle{firstpage}{% new pagestyle
  \fancyhf{}
  \chead{\myheader}}
  \newcommand\myheader{%
      \begin{minipage}[b]{\textwidth}
      \renewcommand{\arraystretch}{1}%
      \begin{tabularx}{\linewidth}{@{}Xl@{}}
          \textbf{FirstName LastName} & \\
          Address1 & Phone +1 (123) 456 7890 \\
          Address2 & Fax +1 (123) 456 7890\\
          Address3 & \href{mailto:[email protected]}{[email protected]}
      \end{tabularx}%
      \end{minipage}%
}
%
\usepackage{lipsum}

\usepackage{hyperref}% normally the last package
\begin{document}
\thispagestyle{firstpage}
\lipsum[1-10]
\end{document}

相关内容