我正在使用Sweave生成一个自动生成的定期报告。为了创建一个漂亮的标题,我使用fancyhdr包,到目前为止效果非常好。现在,由于我的报告是期刊,我想动态更改标题而不将参数传递给函数。这就是为什么我写了一个R函数来检查哪个时期是最新的。 基于此,在R中生成标题字符串。
长话短说,我知道今天在LaTeX中有\但我需要使用来自R的特定信息,而不仅仅是日期。
这是我的代码:
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{%
\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{%
\markright{\thesection\ #1}}
\fancyhf{}
\fancyhead[LE,RO]{\bfseries\thepage}
\fancyhead[LO]{\rightmark{
<<>>=
print(TexHeader)@
}}
\fancyhead[RE]{\bfseries\leftmark}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0pt}
\addtolength{\headheight}{0.5pt}
\fancypagestyle{plain}{%
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}}
会导致以下错误:
Package Fancyhdr Warning: \fancyhead's `E' option without twoside option is use
less on input line 23.
这正是我的TexHeader所在的行。
答案 0 :(得分:2)
对于单面文档,您可以使用\fancyhead[L]{...}
和\fancyhead[R]{...}
。
此外,在这种情况下,最好使用<<results=tex, echo=FALSE>>=
。
这是一个例子:
\documentclass[a4paper]{report}
\usepackage{fancyhdr}
\usepackage{lipsum}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{%
\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{%
\markright{\thesection\ #1}}
\fancyhf{}
\fancyhead[R]{\bfseries\thepage}
\fancyhead[L]{\rightmark{%
<<results=tex, echo=FALSE>>=
TexHeader <- format(Sys.time(), "%c")
cat(TexHeader)
@
}}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0pt}
\addtolength{\headheight}{0.5pt}
\fancypagestyle{plain}{%
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}}
\begin{document}
\lipsum
\end{document}
答案 1 :(得分:1)
这只是一个警告,而不是错误。该警告表示您已为偶数页面添加了格式,这仅在您使用双面输出时才相关,使用文档类中的“twoside”选项激活。否则所有页面都被fancyhdr视为奇数