3

Sweaveを使用して自動生成された定期レポートを生成しています。素敵なヘッダーを作成するために、これまでのところ非常にうまく機能するfancyhdrパッケージを使用します。今、私のレポートは定期的であるため、関数に引数を渡さずにヘッダーを動的に変更したいと思います。そのため、どの期間が最新かをチェックするだけの小さなR関数を作成しました。これに基づいて、ヘッダー文字列がRで生成されます。

簡単に言うと、LaTeXには\ todayがあることは知っていますが、日付だけでなく、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が配置されている行です。

4

2 に答える 2

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}
于 2010-08-04T08:18:07.273 に答える
1

これは単なる警告であり、エラーではありません。警告は、偶数ページにフォーマットを追加したという事実に関するものです。これは、ドキュメントクラスの「両面」オプションを使用してアクティブ化された両面出力を使用している場合にのみ関連します。それ以外の場合、すべてのページはfancyhdrによって奇数として扱われます

于 2010-08-04T08:16:53.037 に答える