页眉规则未超出边距

页眉规则未超出边距

fancyhdr我正在尝试使用和包自定义标题规则tikz。我希望规则可以超出边距。为了做到这一点,我认为用tikzfrom画一条线(-1,0) to (18,0)会使每边的边距超出 1 厘米,但我得到的结果是这条线只越过了左边距,而不是右边距。这是我的代码的 MWE:

\documentclass[12pt,a4paper]{report}

\usepackage{geometry}
    \geometry{
        left = 2cm,
        right = 2cm,
        top = 3cm,
        bottom = 2cm
    }
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{lipsum}

\usepackage{fancyhdr}
    \pagestyle{fancy}
    \lhead{Ex Tunc}
    \chead{\( \circledast \)}
    \rhead{Ex Nunc}
    \renewcommand{\headrule}{%
        \raisebox{.3cm}{%
            \begin{tikzpicture}[x=1cm,y=1cm]
            \draw (-1,0) to (18,0);
            \end{tikzpicture}
        }
    }
\begin{document}
    \lipsum[1-20]
\end{document}

下面是我得到的图像(上图)和我想要的图像(下图):

在此处输入图片描述

答案1

快速破解:在规则前面放置一个负空间。

\documentclass[12pt,a4paper]{report}

\usepackage{geometry}
    \geometry{
        left = 2cm,
        right = 2cm,
        top = 3cm,
        bottom = 2cm
    }
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{lipsum}

\usepackage{fancyhdr}
    \pagestyle{fancy}
    \lhead{Ex Tunc}
    \chead{\( \circledast \)}
    \rhead{Ex Nunc}
    \renewcommand{\headrule}{%
            \hspace*{-1cm}%
        \raisebox{.3cm}{%
            \begin{tikzpicture}[x=1cm,y=1cm]
            \draw (-1,0) to (18,0);
            \end{tikzpicture}
        }
    }
\begin{document}
    \lipsum[1-20]
\end{document}

在此处输入图片描述

另一种方法是使用带有remember picture, overlay选项的 tikzpicture。这样做的好处是可以避免出现框过满的警告。

\documentclass[12pt,a4paper]{report}

\usepackage{geometry}
    \geometry{
        left = 2cm,
        right = 2cm,
        top = 3cm,
        bottom = 2cm
    }
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{lipsum}

\usepackage{fancyhdr}
    \pagestyle{fancy}
    \lhead{Ex Tunc}
    \chead{\( \circledast \)}
    \rhead{Ex Nunc}
    \renewcommand{\headrule}{%
        \raisebox{.3cm}{%
            \begin{tikzpicture}[x=1cm,y=1cm,remember picture, overlay]
            \draw (-1,0) to (18,0);
            \end{tikzpicture}
        }
    }
\begin{document}
    \lipsum[1-20]
\end{document}

答案2

您不需要为此使用像 tikz 这样的 hammersledge:titleps附带的包titlesec可以替换fancyhdr,它定义了一个widenhead命令:

\documentclass[12pt, a4paper]{report}

\usepackage{geometry}
    \geometry{%
        hmargin = 2cm,
        top = 3cm,
        bottom = 2cm
    }%
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{lipsum}

\usepackage{titleps}

\newpagestyle{wide}{%
\headrule
\sethead{\hspace{1cm}Ex Tunc}{\( \circledast \)}{Ex Nunc\hspace{1cm}}
\setfoot{}{\thepage}{}
}%
\pagestyle{wide}
\widenhead{1cm}{1cm}

\begin{document}

    \lipsum[1-20]

\end{document} 

在此处输入图片描述

相关内容