我一直在玩这个scrlttr2
类。请参阅下面的示例脚本。我在垂直定位方面遇到了一些问题。
我的 LaTeX 文件顶部有一行,将一些版本控制记账信息添加到输出中。请参阅在 TeX 文档中嵌入 Mercurial 版本控制信息了解详情。
为了完成这个练习,我刚刚插入了一个字符串。我有几个问题。
是否可以自定义扩展信头
scrlttr2
?我认为应该可以使用自定义变量将会计信息添加为信头的一部分firsthead
。但我找不到使用的任何实际示例firsthead
。我当前设置的问题是使用放置的那条线与eso-pic
信头重叠,所以我必须将信头向下移动。我使用这样做firstheadvpos
,但最好不要这样做。此外,向下移动信头会开始碰到
toaddress
。我该如何调整信头和 之间的空间toaddress
?我原本希望信头和toaddress
会自动保持彼此之间的相对空间,但这似乎并没有发生。
这是代码。
\documentclass[12pt,foldmarks=true,foldmarks=blmtP,fromalign=center,
fromphone,fromemail,version=last, backaddress=false]{scrlttr2}
\usepackage{eso-pic,picture}
\AddToShipoutPictureBG*{
\AtPageUpperLeft{
\put(\oddsidemargin+1in+0.5\textwidth,-1.5cm){%
\makebox[0pt][c]{\textbf{ex.tex}
c1cf35eef2c30d69fd2c41171434f4f1acd32c0d 2015-03-15 20:17 +0530}}
}
}
\usepackage{fouriernc}
\begin{document}
\setkomavar{fromname}{Someone Else}
\setkomavar{fromaddress}{Some Other Bldg.\\ Some Road\\ Some City}
\setkomavar{fromphone}{22019466}
\setkomavar{fromemail}{[email protected]}
%\setkomavar{firsthead}[foo]{}
\makeatletter\@setplength{firstheadvpos}{1.7cm}\makeatother
\def\today{13th March, 2015}
\begin{letter}{
\vspace{0.5cm}
Someone\\ Some Org\\ Some Place\\ Some Road\\ Some City\\
Subject: Some subject}
\opening{Someone,}
\closing{Yours Sincerely,}
\end{letter}
\end{document}
答案1
据我所知,没有办法在默认的顶部添加此信息first head
。使用选项fromalign=Center
和变量,firsthead
您可以定义自己的标题。
也许你正在寻找类似的东西
\setkomavar{firsthead}{%
\parbox{\linewidth}{\centering
\textbf{ex.tex}c1cf35eef2c30d69fd2c41171434f4f1acd32c0d 2015-03-15 20:17 +0530\\
\usekomavar{fromname}\\
\usekomavar{fromaddress}\\
\usekomavar*{fromphone}\usekomavar{fromphone}\\
\usekomavar*{fromemail}\usekomavar{fromemail}
}%
}
firsthead
和之间没有相对空间toaddress
。 的垂直位置绝对toaddress
由伪长度决定toaddrvpos
。但应该有一个最小距离,所以你会收到一个警告,说你的第一个头太高了。这意味着第一个头离地址字段太近了。
第一个头部的空间可以通过以下方式扩大
\makeatletter
% enlarge the first head by 5pt to avoid the warning
\@addtoplength[-]{firstheadvpos}{5pt}
\makeatother
然后-5pt
会被添加到伪长度中firstheadvpos
,因此纸张上边缘和第一个头部上边缘之间的距离减少了 5pt。这意味着第一个头部上方的边距减少了 5pt。
另一种可能性是5pt
添加toaddrvpos
\makeatletter
% enlarge the first head by 5pt to avoid the warning
\@addtoplength{toaddrvpos}{5pt}
\makeatother
因此,地址字段向下移动 5pt,并且不再位于德国窗口信封的最佳位置。
伪长度和相关命令的解释见KOMA-Script 文档,章节 »有关字母类 scrlttr2 和字母包 scrletter 的附加信息«。还有一个显示伪长度的图。
代码:
\documentclass[12pt,foldmarks=true,foldmarks=blmtP,fromalign=center,
fromphone,fromemail,version=last, backaddress=false,
subject=titled% <- added
]{scrlttr2}
\usepackage{fouriernc}
\setkomavar{fromname}{Someone Else}
\setkomavar{fromaddress}{Some Other Bldg.\\ Some Road\\ Some City}
\setkomavar{fromphone}{22019466}
\setkomavar{fromemail}{[email protected]}
\setkomavar{subject}{Some subject}% <-added
\setkomavar{firsthead}{%
\parbox{\linewidth}{\centering
\textbf{ex.tex}c1cf35eef2c30d69fd2c41171434f4f1acd32c0d 2015-03-15 20:17 +0530\\
\usekomavar{fromname}\\
\usekomavar{fromaddress}\\
\usekomavar*{phoneseparator}\usekomavar{phoneseparator}\usekomavar{fromphone}\\
\usekomavar*{emailseparator}\usekomavar{emailseparator}\usekomavar{fromemail}
}%
}
\makeatletter
% enlarge the first head by 5pt to avoid the warning
\@addtoplength[-]{firstheadvpos}{5pt}
\makeatother
\def\today{13th March, 2015}
\begin{document}
\begin{letter}{Someone\\ Some Org\\ Some Place\\ Some Road\\ Some City}
\opening{Someone,}
\closing{Yours Sincerely,}
\end{letter}
\end{document}
当然,你可以自定义firsthead
和firstfoot
。例如
\makeatletter
\@addtoplength{firstheadvpos}{5pt}
\makeatother
\setkomavar{firsthead}{%
\begin{tabular}[b]{l@{}}%
\usekomavar{fromname}\\
\usekomavar*{fromphone}\usekomavar{fromphone}\\
\usekomavar*{fromemail}\usekomavar{fromemail}
\end{tabular}
\hfill
\normalsize
\begin{tabular}[b]{r@{}}%
\usekomavar{fromaddress}
\end{tabular}\\
\rule[2mm]{\textwidth}{0.5pt}%
}
\setkomavar{firstfoot}{%
\parbox{\linewidth}{\centering\textbf{ex.tex}
c1cf35eef2c30d69fd2c41171434f4f1acd32c0d 2015-03-15 20:17 +0530}\\[.5\baselineskip]
}
但可能你只想在第一个标题上方添加信息而不改变字母布局。那么你可以加载包scrlayer
并在页面样式中添加一个层empty
\usepackage{scrlayer}
\DeclareNewLayer[
background,head,align=b,voffset=\useplength{firstheadvpos},height=\baselineskip,
contents={\makebox[\layerwidth]{\textbf{ex.tex}
c1cf35eef2c30d69fd2c41171434f4f1acd32c0d 2015-03-15 20:17 +0530}}
]{versioncontrol.head}
\AddLayersToPageStyle{empty}{versioncontrol.head}
代码:
\documentclass[12pt,foldmarks=true,foldmarks=blmtP,fromalign=center,
fromphone,fromemail,version=last, backaddress=false,
subject=titled,% <- added
]{scrlttr2}
\usepackage{fouriernc}
\setkomavar{fromname}{Someone Else}
\setkomavar{fromaddress}{Some Other Bldg.\\ Some Road\\ Some City}
\setkomavar{fromphone}{22019466}
\setkomavar{fromemail}{[email protected]}
\setkomavar{subject}{Some subject}% <-added
\usepackage{scrlayer}
\DeclareNewLayer[
background,head,align=b,voffset=\useplength{firstheadvpos},height=\baselineskip,
contents={\makebox[\layerwidth]{\textbf{ex.tex}
c1cf35eef2c30d69fd2c41171434f4f1acd32c0d 2015-03-15 20:17 +0530}}
]{versioncontrol.head}
\AddLayersToPageStyle{empty}{versioncontrol.head}
\def\today{13th March, 2015}
\begin{document}
\begin{letter}{Someone\\ Some Org\\ Some Place\\ Some Road\\ Some City}
\opening{Someone,}
\closing{Yours Sincerely,}
\end{letter}
\end{document}