Pokazać numer strony / tę samą stopkę na pierwszej stronie listu w KOMA scrlttr2?

Jan 08 2021

Używam skryptu KOMA scrlttr2i chcę po prostu wyświetlać ten sam tekst (numer / numer mojej strony) na wszystkich stronach mojego listu, oczywiście w tym na pierwszej.

Znalazłem tę odpowiedź i ten nieco stary post na blogu . Ale oba są niezręcznie skomplikowane i wymagają ode mnie zdefiniowania ogromnej ilości makr LaTex, aby robić to samo, co robi automatycznie, zaczynając od strony drugiej (2).

Jak mogę wyświetlić ten sam tekst (numer strony) w stopce pierwszej strony, jak w stopce na drugiej / wszystkich innych stronach? W przeciwieństwie do wszystkich innych pytań nie szukam najbardziej eleganckiego rozwiązania (które zajmuje 100 wierszy), ale wystarczyłbym, gdybyśmy ponownie powielili / zakodowali stopkę, powtarzając ją. Nawet jeśli zajęłoby mi napisanie „Strona 1 z \ letterlastpage”.

Zasadniczo używam tego przykładu wziętego stąd :

\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}

Odpowiedzi

1 esdd Jan 08 2021 at 22:26

Układ strony z pierwszą literą jest wyjątkowy. Styl strony z pierwszą literą to empty. Wykorzystuje specjalne elementy adresu, lokalizacji, nagłówka, stopki itp.

Musisz użyć zmiennej, firstfootaby dodać treść w stopce pierwszej strony. Jeśli przedefiniujesz, \pagemarkaby uzyskać »Strona ... z ...«, możesz użyć \centering\pagemarkdla firstfoot:

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

Przykład:

\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}

Zwróć uwagę, że stopka na pierwszej stronie jest niższa niż na innych stronach. Jeśli powinien znajdować się w tym samym miejscu, możesz zastosować poprawkę, \openingaby użyć stylu strony plainna pierwszej stronie:

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

lub z pakietem xpatch:

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

Zwróć uwagę, że nadal możesz używać zmiennej firstheaddo definiowania nagłówka pierwszej litery strony.

Przykład:

\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

Stopka na pierwszej stronie listu jest domyślnie pusta.

Będziesz musiał zdefiniować własną stopkę na pierwszej stronie za pomocą firstfootzmiennej i ustawić jej położenie od góry strony za pomocą firstfootvposzmiennej.

Włącz stopkę za pomocą firstfoot=trueopcji.

Kolejne stopki (wykonane ze \cfootz scrlayer-scrpagepakietu w Twojej przykład kodu, to działa ok) można również ustawić wewnątrz scrlttr2przy użyciu jego nextfootzmienną.

Ponadto, ponieważ w przykładzie nie ma papieru firmowego ani odniesienia, pozwoliłem sobie przesunąć nieco dalej w górę strony adres docelowy i treść listu, aby wykorzystać trochę miejsca.

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

Łącząc wiele odpowiedzi (połączonych w kodzie), znalazłem rozwiązanie, które używa tylko wewnętrznego scrlttr2parametru, tj \pagemark. Głównie .

Masz również jedno miejsce na zdefiniowanie stylu numeracji stron.

\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}