KOMA scrlttr2のレターの最初のページにページ番号/同じフッターを表示しますか?

Jan 08 2021

KOMAスクリプトを使用していてscrlttr2、手紙のすべてのページに同じテキスト(ページ番号/番号)を表示したいだけです。もちろん、最初のページも含まれます。

私はこの答えとこのやや古いブログ投稿を見つけました。しかし、どちらも厄介なほど複雑で、2ページ目から自動的に行うのと同じことを行うためにLaTexマクロを定義する必要があります。

最初のページのフッターに、2番目/他のページのフッターと同じテキスト(ページ番号)を表示するにはどうすればよいですか?他のすべての質問とは対照的に、私は最も洗練された解決策(100行かかる)を探していませんが、フッターを繰り返して複製/ハードコーディングしても問題ありません。「\ letterlastpageの1ページ目」と書くのに時間がかかるとしても。

私は基本的にここから取ったこの例を使用します:

\documentclass{scrlttr2}
\usepackage{scrlayer-scrpage}

\cfoot{Page \thepage\ of \letterlastpage}

\usepackage{lipsum}
\begin{document}
\begin{letter}{%
    Jerry Garcia\\
    710 Ashbury St\\
    San Francisco\\
    CA 94117
    }
    \opening{Dear Friend,}
    
  \lipsum\lipsum    

\end{letter}

\begin{letter}{%
    Jerry Garcia\\
    710 Ashbury St\\
    San Francisco\\
    CA 94117
    }
    \opening{Dear Friend,}

  \lipsum\lipsum    

\end{letter}

\end{document}

回答

1 esdd Jan 08 2021 at 22:26

最初の文字ページのレイアウトは特別です。最初の文字のページのページスタイルはemptyです。アドレス、場所、ヘッダー、フッターなどに特別な要素を使用します。

firstfoot最初のページのフッターにコンテンツを追加するには、変数を使用する必要があります。あなたが再定義した場合\pagemarkの...«...»ページを取得するには、あなたが使用することができます\centering\pagemarkのためにfirstfoot

\renewcommand*\pagemark{%
  \usekomafont{pagenumber}{\pagename~\thepage~of~\letterlastpage}%
}
\setkomavar{firstfoot}{\centering\pagemark}

例:

\documentclass{scrlttr2}

\renewcommand*\pagemark{%
  \usekomafont{pagenumber}{\pagename~\thepage~of~\letterlastpage}%
}
\setkomavar{firstfoot}{\centering\pagemark}

\usepackage{lipsum}
\begin{document}
\begin{letter}{Jerry Garcia\\710 Ashbury St\\San Francisco\\CA 94117}
\opening{Dear Friend,}
\lipsum\lipsum
\end{letter}

\begin{letter}{Jerry Garcia\\710 Ashbury St\\San Francisco\\CA 94117}
\opening{Dear Friend,}
\lipsum\lipsum
\end{letter}
\end{document}

最初のページのフッターは他のページよりも低いことに注意してください。同じ位置にある必要がある場合は、最初のページで\openingページスタイルを使用するようにパッチを適用できplainます。

\newcommand{\originalopening}{}
\let\originalopening\opening
\renewcommand{\opening}[1]{\originalopening{#1}\thispagestyle{plain}}
\KOMAoptions{firstfoot=false}% disable first footer

またはパッケージ付きxpatch

\usepackage{xpatch}
\xpatchcmd{\opening}{\thispagestyle{empty}}{\thispagestyle{plain}}{}{\PatchFailed}
\KOMAoptions{firstfoot=false}% disable first footer

変数firstheadを使用して、最初の文字ページのヘッダーを定義できることに注意してください。

例:

\documentclass{scrlttr2}

\renewcommand*\pagemark{%
  \usekomafont{pagenumber}{\pagename~\thepage~of~\letterlastpage}%
}

\usepackage{xpatch}
\xpatchcmd{\opening}{\thispagestyle{empty}}{\thispagestyle{plain}}{}{\PatchFailed}
\KOMAoptions{firstfoot=false}% disable first footer

\usepackage{lipsum}
\begin{document}
\begin{letter}{Jerry Garcia\\710 Ashbury St\\San Francisco\\CA 94117}
\opening{Dear Friend,}
\lipsum\lipsum
\end{letter}

\begin{letter}{Jerry Garcia\\710 Ashbury St\\San Francisco\\CA 94117}
\opening{Dear Friend,}
\lipsum\lipsum
\end{letter}
\end{document}

1 Cicada Jan 08 2021 at 16:58

レターの最初のページのフッターはデフォルトで空です。

firstfoot変数を使用して独自の最初のページのフッターを定義し、変数を使用してページの上部からその位置を設定する必要がありfirstfootvposます。

firstfoot=trueオプションでフッターをオンにします。

後続のフッター(コード例のパッケージ\cfootから実行さscrlayer-scrpageれます。正常に機能します)もscrlttr2nextfoot変数を使用して設定できます。

また、例にはレターヘッドがなく、参照もないため、スペースの一部を使用するために、宛先アドレスと文字本文をページの少し上に移動する自由を取りました。

MWE

\documentclass[firstfoot=true,
enlargefirstpage=true,
firsthead=false,
]{scrlttr2}
%%\usepackage{scrlayer-scrpage}
%\cfoot{Page \thepage\ of \letterlastpage}

\setplength{toaddrvpos}{\footskip}
\setplength{refvpos}{3.5\footskip}
\pagestyle{myheadings}
%\markboth{}{}
\setplength{firstfootvpos}{\pageheight-1.5\footskip}\setkomavar{firstfoot}{%
\parbox[t]{\linewidth}{%
\centering \textit{Page \thepage\ of \letterlastpage}%
}%
}
\setkomavar{nextfoot}{%
\parbox[t]{\linewidth}{%
\centering \textit{Page \thepage\ of \letterlastpage}%
}%
}
\usepackage{lipsum}
\begin{document}
\begin{letter}{%
    Jerry Garcia\\
    710 Ashbury St\\
    San Francisco\\
    CA 94117
    }
    \opening{Dear Friend,}
    
  \lipsum\lipsum    

\end{letter}

\begin{letter}{%
    Jerry Garcia\\
    710 Ashbury St\\
    San Francisco\\
    CA 94117
    }
    \opening{Dear Friend,}

  \lipsum\lipsum    

\end{letter}

\end{document}
rugk Jan 08 2021 at 22:32

(コードにリンクされている)複数の回答を組み合わせることで、内部scrlttr2パラメーターのみを使用するソリューションを見つけました\pagemark

また、そこにページ番号スタイルを定義する場所が1つあります。

\documentclass[enlargefirstpage=true]{scrlttr2}
\usepackage{scrlayer-scrpage}

% better page numbers with total number
% https://tex.stackexchange.com/a/578072/98645
\renewcommand*\pagemark{%
  \usekomafont{pagenumber}{\pagename~\thepage~of~\letterlastpage}%
  %\usekomafont{pagenumber}{-~\thepage~von~\letterlastpage~-}% different style example
}
% also show page number on first page
% https://tex.stackexchange.com/a/578050/98645
\markboth{}{}
\setkomavar{firstfoot}{%
    \parbox[t]{\linewidth}{%
        \centering \pagemark%
    }%
}

\usepackage{lipsum}
\begin{document}
\begin{letter}{%
    Jerry Garcia\\
    710 Ashbury St\\
    San Francisco\\
    CA 94117
    }
    \opening{Dear Friend,}

  \lipsum\lipsum    

\end{letter}

\begin{letter}{%
    Jerry Garcia\\
    710 Ashbury St\\
    San Francisco\\
    CA 94117
    }
    \opening{Dear Friend,}

  \lipsum\lipsum    

\end{letter}

\end{document}