带有 scrletter 的 vbox 溢出

带有 scrletter 的 vbox 溢出

我在一封信的标题中有一个溢出的 vbox,我想将其隐藏。以下是 mwe:

\documentclass{scrartcl}
\usepackage{scrletter}
%\vfuzz=15pt
\KOMAoptions{
  fromalign = right,
  fromemail = true,
  frommobilephone = true,
  fromphone = true,
  fromurl = true,
  backaddress = underlined,
}
\begin{document}
\setkomavar{fromname}{ich}
\setkomavar{fromaddress}{irgendwo\\mehrzeilig\\stadt}
\begin{letter}{Vorname Nachname\\Position\\Firma\\Strasse}

\opening{Hallo,}
\end{letter}
\end{document}

起始地址和结束地址有一点重叠,因此我得到了一个溢出的 vbox(并且另外还有一个关于它的 scrletter 警告)。我知道我可以用vfuzz第 3 行中的类似代码来抑制关于溢出 vbox 的编译器通知。但我仍然有 scrletter 警告。

vfuzz在 koma 文中是否有- 等价词?

我知道我可以简单地忽略该消息,输出是相同的,但我不想因此而错过其他可能更重要的警告。

谢谢你的帮助!

编辑:下面来自 esdd 的答案有效,但如果可能的话,我更喜欢一个不修补 koma-script 宏的解决方案,因为 esdd 提到了危险。

答案1

而不是像下面这样修补内部命令我的其他答案您可以使用变量重建第一页的标题firsthead

\documentclass{scrartcl}
\usepackage{scrletter}

\setkomavar{firsthead}{%
  \parbox[t][2\baselineskip][t]{\useplength{firstheadwidth}}{%
    \raggedleft\usekomafont{fromaddress}
    {\usekomafont{fromname}\usekomavar{fromname}}\\
    \usekomavar{fromaddress}%
    \ifkomavarempty{fromphone}{}
      {\\\usekomavar*{fromphone}\usekomavar{fromphone}}
    \ifkomavarempty{frommobilephone}{}
      {\\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}}%
    \ifkomavarempty{fromemail}{}
      {\\\usekomavar*{fromemail}\usekomavar{fromemail}}%
    \ifkomavarempty{fromurl}{}
      {\\\usekomavar*{fromurl}\usekomavar{fromurl}}%
  }%
}

\begin{document}
\setkomavar{fromname}{ich}
\setkomavar{fromaddress}{irgendwo\\mehrzeilig\\stadt}
\setkomavar{fromphone}{1234}
\setkomavar{frommobilephone}{5678}
\setkomavar{fromemail}{[email protected]}
\setkomavar{fromurl}{wir.xxx}

\begin{letter}{Vorname Nachname\\Position\\Firma\\Strasse}

\opening{Hallo,}
\end{letter}
\end{document}

结果:

在此处输入图片描述


但您也可以更改信件页面的布局。也许您可以减少头部的信息,并使用变量将它们放在脚部firstfoot。或者您可以将发件人信息放在位置字段中,将选项更改fromalign=right

fromalign=locationright

在此处输入图片描述

或者你可以使用以下方法更改字体大小

\addtokomafont{fromname}{\footnotesize}
\addtokomafont{fromaddress}{\footnotesize}

在此处输入图片描述

答案2

免责声明:不建议修补内部 KOMA-Script 命令。此类修补程序将来可能会失效。

使用当前版本的 KOMA-Script,你可以使用以下方法避免有关第一个头部高度的警告

\usepackage{xpatch}
\makeatletter
% warning: patching an internal KOMA-Script command is not recommended- it could break in the future
\xpatchcmd{\@savevbox}
  {\addtolength{\@tempdimb}{\dp0}}
  {%
    \addtolength{\@tempdimb}{\dp0}%
    \ifstr{#5}{firstheadvpos}
      {\addtolength{\@tempdimb}{-15pt}}% <- adjust the length to your needs
      {}%
  }
  {}{\PatchFailed}
\makeatother

例子:

\documentclass{scrartcl}
\usepackage{scrletter}

\usepackage{xpatch}
\makeatletter
% warning: patching an internal KOMA-Script command is not recommended- it could break in the future
\xpatchcmd{\@savevbox}
  {\addtolength{\@tempdimb}{\dp0}}
  {%
    \addtolength{\@tempdimb}{\dp0}%
    \ifstr{#5}{firstheadvpos}
      {\addtolength{\@tempdimb}{-15pt}}% <- adjust the length to your needs
      {}%
  }
  {}{\PatchFailed}
\makeatother

\KOMAoptions{
  fromalign = right,
  fromemail = true,
  frommobilephone = true,
  fromphone = true,
  fromurl = true,
  backaddress = underlined,
}
\begin{document}

\setkomavar{fromname}{ich}
\setkomavar{fromaddress}{irgendwo\\mehrzeilig\\stadt}
\begin{letter}{Vorname Nachname\\Position\\Firma\\Strasse}

\opening{Hallo,}
\end{letter}
\end{document}

相关内容