แสดงหมายเลขหน้า / ส่วนท้ายเดียวกันในหน้าแรกของตัวอักษรใน KOMA scrlttr2?

Jan 08 2021

ฉันใช้สคริปต์ KOMA scrlttr2และเพียงแค่ต้องการแสดงข้อความเดียวกัน (การกำหนดเลขหน้า / หมายเลขหน้าของฉัน) ในทุกหน้าของจดหมายของฉันซึ่งรวมถึงข้อความแรก

ฉันได้พบคำตอบนี้และโพสต์บล็อกนี้ค่อนข้างเก่า แต่ทั้งสองมีความซับซ้อนอย่างเชื่องช้าและต้องการให้ฉันกำหนดมาโคร LaTex สำหรับการทำเช่นเดียวกันโดยอัตโนมัติโดยเริ่มต้นด้วยหน้าที่สอง (2)

ฉันจะแสดงข้อความเดียวกัน (หมายเลขหน้า) ในส่วนท้ายของหน้าแรกเหมือนกับในส่วนท้ายของหน้าอื่น ๆ ได้อย่างไร ตรงกันข้ามกับคำถามอื่น ๆ ทั้งหมดฉันไม่ได้ค้นหาวิธีแก้ปัญหาที่หรูหราที่สุด (ซึ่งใช้เวลา 100 บรรทัด) แต่ฉันจะทำซ้ำ / เข้ารหัสส่วนท้ายอีกครั้งโดยการทำซ้ำ แม้ว่าฉันจะต้องเขียน“ หน้า 1 ของ \ letterlastpage” ก็ตาม

โดยทั่วไปฉันใช้ตัวอย่างนี้โดยนำมาจากที่นี่ :

\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แพ็คเกจในตัวอย่างโค้ดของคุณใช้งานได้ดี) สามารถตั้งค่าภายในได้scrlttr2โดยใช้nextfootตัวแปร

นอกจากนี้เนื่องจากไม่มีหัวจดหมายในตัวอย่างและไม่มีการอ้างอิงฉันจึงมีเสรีภาพในการย้ายที่อยู่และเนื้อหาของตัวอักษรขึ้นไปบนหน้าเล็กน้อยเพื่อใช้พื้นที่บางส่วน

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

นอกจากนี้คุณมีที่เดียวในการกำหนดลักษณะหมายเลขหน้าที่นั่น

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