我有以下瑞士式信件布局,我希望能够移动收件人段落以匹配信封的开口。我希望将地点和日期水平滑动以与收件人段落对齐。
我尝试了很多方法,但由于我是 LaTex 新手,我仍然不明白它的大多数技巧。例如,我不明白为什么在下面的代码中,我的名字和日期等内容在\setkomavar
之前定义\begin{document}
,而收件人的段落却在后面的文档部分中定义...
我怎样才能满足我的需求?
提前致谢。
\documentclass[
SN,% lco file for swiss letters (SN 010 130))
refline=dateleft,
firstfoot=false,
enlargefirstpage,
backaddress=false,
foldmarks=false,
parskip=half-
]{scrlttr2}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[french]{babel}
\setkomavar{fromname}{John Doe}
\setkomavar{fromaddress}{My Street \\ My City \\ Suisse}
% adapter ces deux lignes :
\setkomavar{date}{Vevey, \today}
\setkomavar{subject}{Titre de la lettre}
\setkomafont{title}{\bfseries\normalsize\raggedright}
\makeatletter
\@setplength{firstheadwidth}{\textwidth}
\makeatother
\renewcommand\raggedsignature{\raggedright}
\usepackage{blindtext}% dummy text
\begin{document}
\begin{letter}{Compagny\\Contact person\\Street\\City}
\opening{Dear Mr. Forexample,}
\blindtext
\blindtext
\closing{Meilleures pensées}
%\encl{enclosures} % pièces jointes
%\cc{other recipients}
\end{letter}
\end{document}
答案1
要可视化地址字段和参考线的位置,您可以使用
% visualize positions of address and refline
\LoadLetterOption{visualize}
\showfields{address,refline}
有了问题中的 MWE,你将得到
SN.lco
将地址字段的伪长度设置为
\@setplength{toaddrvpos}{%
45mm}
\@setplength{toaddrhpos}{%
-8mm}
\@setplength{toaddrwidth}{%
90mm}
\@setplength{toaddrheight}{%
45mm}
因此地址栏距离顶部 45 毫米,距离纸张左边框 8 毫米。要移动地址栏,您可以使用
\@addtoplength{toaddrhpos}{<horizontal shift>}
\@addtoplength{toaddrvpos}{<vertical shift>}
有可能
\@addtoplength{reflinevpos}{<vertical shift>}
与 相同<vertical shift>
。
为了将日期与地址字段对齐,您必须更改参考行的伪长度:
\@setplength{refwidth}{\useplength{toaddrwidth}}
\@setplength{refhpos}{\paperwidth}
\@addtoplength{refhpos}{\useplength{toaddrhpos}}
\@addtoplength[-]{refhpos}{\useplength{toaddrwidth}}
例子:
\documentclass[
SN,% lco file for swiss letters (SN 010 130))
refline=dateleft,
firstfoot=false,
enlargefirstpage,
backaddress=false,
foldmarks=false,
parskip=half-
]{scrlttr2}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[french]{babel}
\setkomavar{fromname}{John Doe}
\setkomavar{fromaddress}{My Street \\ My City \\ Suisse}
% adapter ces deux lignes :
\setkomavar{date}{Vevey, \today}
\setkomavar{subject}{Titre de la lettre}
\setkomafont{title}{\bfseries\normalsize\raggedright}
% visualize positions of address and refline
\LoadLetterOption{visualize}
\showfields{address,refline}
\makeatletter
\@setplength{firstheadwidth}{\textwidth}
% shift address
\@addtoplength{toaddrhpos}{-1cm}
\@addtoplength{toaddrvpos}{-1.25cm}
%\@addtoplength{refvpos}{-1.25cm}
% align refline with address horizentally
\@setplength{refwidth}{\useplength{toaddrwidth}}
\@setplength{refhpos}{\paperwidth}
\@addtoplength{refhpos}{\useplength{toaddrhpos}}
\@addtoplength[-]{refhpos}{\useplength{toaddrwidth}}
%
\makeatother
\renewcommand\raggedsignature{\raggedright}
\usepackage{blindtext}% dummy text
\begin{document}
\begin{letter}{Compagny\\Contact person\\Street\\City}
\opening{Dear Mr. Forexample,}
\blindtext
\blindtext
\closing{Meilleures pensées}
\end{letter}
\end{document}
结果:
KOMA-Script 版本 3.26(当前版本为 3.25)将引入命令\setplength
和\addtoplength
来替换文档代码中的\@setplength
和。\@addtoplength
补充说明:您可以为单个字母本地设置 KOMA-Script 变量date
,例如subject
。然后您必须使用\setkomavar{subject}{<subject of the letter>} between
\begin{letter} and
\opening`。