scrlttr2 签名位置与 KOMA-Script 伪长度 sigindent 相同吗?

scrlttr2 签名位置与 KOMA-Script 伪长度 sigindent 相同吗?

我正在尝试将法式信件的签名与收件人地址对齐。
我可以使用非常好的信函正如我所提到的那样上一个问题但我需要scrlttr2重用 org-mode koma 导出后端。

我尝试使用以下命令设置位置:

测试 0

\makeatletter
\@setplength{sigindent}{-\useplength{refhpos}+\useplength{toaddrhpos}}}
\makeatother

测试 1

\setkomavar{signature}{Chef Abraracoursix,\\Un chef à toujours bras long.}

测试 2

\setkomavar{signature}{\hspace{26em}\includegraphics[width=2.5cm]
{example-image}}

测试 3

\setkomavar{signature}{\hspace{26em}
  \begin{minipage}[t]{7cm}
    {Chef Abraracoursix,\hfill \\Un chef à toujours bras long.}
  \end{minipage}}

但是签名粘在了左边。这是我的完整代码和我想要的结果。

% Created 2019-04-08 lun. 11:20
% Intended LaTeX compiler: pdflatex
\documentclass{scrlttr2}
\usepackage[francais]{babel}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}
% \usepackage{showframe} % to show the page boundaries from https://tex.stackexchange.com/questions/298246/signatures-side-by-side

% \usepackage{geometry} 
% \geometry{verbose,a4paper,lmargin=3cm,rmargin=3cm}

\LoadLetterOption{visualize}
\showfields{head,foot,address,location,refline}
\LoadLetterOption{NF}
\renewcaptionname{french}{\subjectname}{Objet}
\renewcaptionname{french}{\ccname}{C.c.}

\KOMAoption{
  ,foldmarks=false
  ,refline=nodate
  ,subject=titled
  ,fromemail=false
  ,fromlogo=false
  ,fromphone=false
  ,fromurl=false
  ,backaddress=false
  ,foldmarks=false
}


% from name
\setkomavar{fromname}{Chef Abraracoursix}
\setkomafont{fromname}{\scshape}

%%%%%%%%%%%%%%%% HERE %%%%%%%%%%%%%%%%
% signature

%%%% test 1
% \setkomavar{signature}{Chef Abraracoursix,\\Un chef à toujours bras long.}

%%%% test 2
% \setkomavar{signature}{\hspace{26em}\includegraphics[width=2.5cm]{example-image}}% <- changed

%%%% test 3
% \setkomavar{signature}{\hspace{26em}
%   \begin{minipage}[t]{7cm}
%     {Chef Abraracoursix,\hfill \\Un chef à toujours bras long.}
%   \end{minipage}}

%%%% test 4
\setkomavar{signature}{
  \noindent \parbox[t]{0.5\linewidth}{Chef Abraracoursix,\hfill \\Un chef à toujours bras long.}
} 

%%%%%%%%%%%%%%%% above %%%%%%%%%%%%%%%%


% from adress
\setkomavar{fromaddress}{Place du village,\\Erqy,\\Armorique}
\setkomafont{fromaddress}{\small}

% place and location
\setkomavar{place}{Erqy}
\setkomavar{placeseparator}{, le }

% other komavar
\setkomavar{ccseparator}{}
\setkomavar*{ccseparator}{\llap{\ccname\quad}}
% \usepackage{setspace} \usepackage{lipsum} \setstretch{1.15}

% \setlength\parskip{\medskipamount} 
% \setlength\parindent{0pt}
% \setstretch{1.15}

\date{\today}

\makeatletter
% firsthead
\setkomavar{firsthead}{{
    \usekomafont{fromaddress}
    \parbox[b]{\useplength{firstheadwidth}}{
      {\usekomafont{fromname}\usekomavar{fromname}}
      \hfill{\usekomafont{placeanddate}
        \ifkomavarempty{place}{}{\usekomavar{place}\usekomavar{placeseparator}}
        \usekomavar{date}
      }
      \\\usekomavar{fromaddress}
      \medskip
      \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi
      \if@mobilephone\\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}\fi
      \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi
      \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi
      \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi
    }}
}

makeatletter
%%%% TEST 0
% \@setplength{sigindent}{-\useplength{refhpos}+\useplength{toaddrhpos}}}
\makeatother
\renewcommand*{\raggedsignature}{\raggedright}


\hypersetup{
  pdfauthor={Chef Abraracoursix},
  pdftitle={Invitation pour une banquet au sanglier Roti},
  pdfcreator={Emacs 26.1 (Org mode 9.1.9)}, 
  pdflang={French}}

\begin{document}

\setkomavar{subject}{Invitation pour une banquet au sanglier Roti}

\begin{letter}{
    Capitaine Paulus Romanicus\\
    Camp de Babaorum
    Bretany}

  \opening{Le Romain,}

  Dans le cadre des rapports de bon voisinage et de notre hospitalité légendaire, nous vous invitons à festoyer avec nous sous le grand chêne, du coucher du soleil à l'aube, à la prochaine plein lune pour le mariage de la belle Fabala et de vigourix.
  \closing{À la tienne !}

\end{letter}

\end{document}

生成的字母

理想情况下我希望

\makeatletter
\@setplength{sigindent}{-\useplength{refhpos}+\useplength{toaddrhpos}}
\makeatother

按预期使用给定的伪长度工作https://i.stack.imgur.com/D2tu3.png

答案1

您的计算-\useplength{refhpos}+\useplength{toaddhpos}没有得出将签名移动到文本区域中间的值。

在您的示例中,的值为refhpos0pt,的值为toaddrhpos-10mm(由 给出NF.lco)。您的

\@setplength{sigindent}{-\useplength{refhpos}+\useplength{toaddrhpos}}

(我删除了一个},因为太多了),会导致sigindent-10mm。这会导致位置位于文本区域左边缘 10mm 处。所以这不是你想要的。

您链接的图像(即当前 KOMA-Script 手册的图 22.1) 是关于左侧的地址字段。您正在使用右侧的地址字段。toaddrhpos从纸张右边缘到地址字段右边缘的距离也是如此。它是负数(如上所述)。refhpos与地址字段的位置无关。

请查看KOMA-Script 手册第二部分表 22.1并进入22.1 节中伪长度的描述看看toaddhposrefhpossigindent由 解释scrlttr2

您可以尝试以下方法:

\setplength{sigindent}{.5\textwidth}

或者更复杂但正确的计算:

\setplength{sigindent}{\paperwidth+\useplength{toaddrhpos}-\useplength{toaddrwidth}+\useplength{toaddrindent}-\oddsidemargin-1in}

注意:这仅适用于toaddrhpos< 0。

\paperwidth+\useplenth{toaddrhpos}是地址字段右边缘相对于纸张左边缘的位置。减去\useplength{toaddrwidth}结果是地址字段左边缘相对于纸张左边缘的位置。加上\useplength{toaddrindent}结果是地址左边缘相对于纸张左边缘的位置。但是sigindent是相对于文本区域左边缘而不是纸张左边缘的位置。所以我们必须减去左边距,即(在单面文档的所有页面中)\oddsidemargin+1in

注意:由于建议使用KOMA-Script 3.26\setplength而不是。现在是内部命令。您不应再使用它。如果您使用的是过时的 KOMA-Script 版本,您仍然必须使用。但在这种情况下,第二个参数中的表达式也不允许。所以你必须使用:\@setplength\@setplength\@setplength

\makeatletter
\@setplength{sigindent}{\dimexpr\paperwidth+\useplength{toaddrhpos}-\useplength{toaddrwidth}+\useplength{toaddrindent}-\oddsidemargin-1in\relax}
\makeatother

或者将计算拆分成几个\@addtoplength

下面是一个示例(使用 KOMA-Script >= 3.26),说明计算过程:

\documentclass[%
  paper=a4,
  fontsize=11pt,
  french,
]{scrlttr2}[2018/12/22]% for KOMA-Script < v3.26 see the note about \setplengt` above

\usepackage{eso-pic,picture,xcolor}% for demonstration only

\usepackage{babel}
\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc}
\usepackage{hyperref}

%\LoadLetterOption{visualize}
%\showfields{head,foot,address,location,refline}
\LoadLetterOption{NF}
\renewcaptionname{french}{\subjectname}{Objet}
\renewcaptionname{french}{\ccname}{C.c.}

\KOMAoptions{
  ,foldmarks=false
  ,refline=nodate
  ,subject=titled
  ,fromemail=false
  ,fromlogo=false
  ,fromphone=false
  ,fromurl=false
  ,backaddress=false
  ,foldmarks=false
}

% from name
\setkomavar{fromname}{Chef Abraracoursix}
\setkomafont{fromname}{\scshape}

\setkomavar{signature}{\noindent Chef Abraracoursix,\\Un chef à toujours bras long.}
\setplength{sigindent}{\paperwidth+\useplength{toaddrhpos}-\useplength{toaddrwidth}+\useplength{toaddrindent}-\oddsidemargin-1in}
% Show the calculation (for demonstration only)
\AddToShipoutPicture{%
  \AtPageUpperLeft{%
    \color{red}%
    \footnotesize
    \put(0,-\useplength{toaddrvpos}){%
      \vector(1,0){\dimexpr\paperwidth+\useplength{toaddrhpos}\relax}%
    }%
    \put(0,-\useplength{toaddrvpos}){%
      \makebox(\dimexpr\paperwidth+\useplength{toaddrhpos}\relax,\ht\strutbox)[cb]{\ttfamily\detokenize{\paperwidth+\useplength{toaddrhpos}}}%
    }%
    \color{red!80!blue!80}%
    \put(\dimexpr\paperwidth+\useplength{toaddrhpos}\relax,-\dimexpr\useplength{toaddrvpos}+\ht\strutbox\relax){%
      \vector(-1,0){\useplength{toaddrwidth}}%
    }%
    \put(\dimexpr\paperwidth+\useplength{toaddrhpos}-\useplength{toaddrwidth}\relax,-\dimexpr\useplength{toaddrvpos}+\ht\strutbox\relax){%

      \makebox(\useplength{toaddrwidth},\ht\strutbox)[cb]{\ttfamily\detokenize{\useplength{toaddrwidth}}}%
    }%
    \color{red!60!blue!60}%
    \put(\dimexpr\paperwidth+\useplength{toaddrhpos}-\useplength{toaddrwidth}\relax,-\dimexpr\useplength{toaddrvpos}+\ht\strutbox*2\relax){%
      \vector(1,0){\useplength{toaddrindent}}%
    }%
    \put(\dimexpr\paperwidth+\useplength{toaddrhpos}-\useplength{toaddrwidth}\relax,-\dimexpr\useplength{toaddrvpos}+\ht\strutbox*2\relax){%
      \makebox(\useplength{toaddrindent},\ht\strutbox){%
        \ttfamily\detokenize{\useplength{toaddrindent}}%
      }%
    }%
    \color{green}%
    \put(\dimexpr\oddsidemargin+1in\relax,
    -\dimexpr\useplength{toaddrvpos}+2cm\relax){%
      \vector(1,0){%
        \dimexpr\paperwidth+\useplength{toaddrhpos}-\useplength{toaddrwidth}+\useplength{toaddrindent}-\oddsidemargin-1in\relax
      }%
    }%
    \put(\dimexpr\oddsidemargin+1in\relax,
    -\dimexpr\useplength{toaddrvpos}+2cm\relax){%
      \makebox(\dimexpr\paperwidth+\useplength{toaddrhpos}-\useplength{toaddrwidth}+\useplength{toaddrindent}-\oddsidemargin-1in\relax,\ht\strutbox)[lb]{%
        \detokenize{\paperwidth+\useplength{toaddrhpos}-\useplength{toaddrwidth}+\useplength{toaddrindent}-\oddsidemargin-1in}%
      }%
    }%
    \color{blue}%
    \put(\dimexpr\paperwidth+\useplength{toaddrhpos}-\useplength{toaddrwidth}+\useplength{toaddrindent}\relax,0){%
      \line(0,-1){\paperheight}%
    }%
  }%
}

% from adress
\setkomavar{fromaddress}{Place du village,\\Erqy,\\Armorique}
\setkomafont{fromaddress}{\small}

% place and location
\setkomavar{place}{Erqy}
\setkomavar{placeseparator}{, le }

% other komavar
\setkomavar{ccseparator}{}
\setkomavar*{ccseparator}{\llap{\ccname\quad}}

\date{\today}

% firsthead
\setkomavar{firsthead}{%
    \usekomafont{fromaddress}%
    \parbox[b]{\useplength{firstheadwidth}}{%
      {\usekomafont{fromname}\usekomavar{fromname}}%
      \hfill{%
        \usekomafont{placeanddate}%
        \ifkomavarempty{place}{}{\usekomavar{place}\usekomavar{placeseparator}}
        \usekomavar{date}
      }%
      \\\usekomavar{fromaddress}%
      \medskip
      \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi%
      \if@mobilephone\\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}\fi%
      \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi%
      \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi%
      \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi%
    }%
}

\renewcommand*{\raggedsignature}{\raggedright}

\hypersetup{%
  pdfauthor={Chef Abraracoursix},
  pdftitle={Invitation pour une banquet au sanglier Roti},
  pdfcreator={Emacs 26.1 (Org mode 9.1.9)}, 
  pdflang={French}
}

\begin{document}

\setkomavar{subject}{Invitation pour une banquet au sanglier Roti}

\begin{letter}{%
    Capitaine Paulus Romanicus\\
    Camp de Babaorum
    Bretany}

\opening{Le Romain,}

Dans le cadre des rapports de bon voisinage et de notre hospitalité 
légendaire, nous vous invitons à festoyer avec nous sous le grand chêne, 
du coucher du soleil à l'aube, à la prochaine plein lune pour le mariage 
de la belle Fabala et de vigourix.
\closing{À la tienne !}

\end{letter}

\end{document}

在此处输入图片描述

请注意,您的代码还存在其他几个问题:

\usepackage[francais]{babel}

已弃用。当前babel警告:

Package francais.ldf Warning: Option `francais' for Babel is *deprecated*,
(francais.ldf)                it might be removed sooner or later. Please
(francais.ldf)                use `french' instead; reported on input line 31.
\KOMAoption{
  ,foldmarks=false
  ,refline=nodate
  ,subject=titled
  ,fromemail=false
  ,fromlogo=false
  ,fromphone=false
  ,fromurl=false
  ,backaddress=false
  ,foldmarks=false
}

是错误的。\KOMAoption有两个参数。第一个是选项键,第二个是选项值列表。

为了帮助用户找出错误,KOMA-Script 的当前预版本会如果您错误地使用 则会显示以下错误消息\KOMAoption

./test.tex:28: Package scrbase Error: syntax error in key ` ,foldmarks=false ,r
efline=nodate ,subject=titled ,fromemail=false ,fromlogo=false ,fromphone=false
 ,fromurl=false ,backaddress=false ,foldmarks=false '.

See the scrbase package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.28 }
      
You've used `\...Option' to set the key ` ,foldmarks=false ,refline=nodate ,sub
ject=titled ,fromemail=false ,fromlogo=false ,fromphone=false ,fromurl=false ,b
ackaddress=false ,foldmarks=false '
to new value(s), but `,' is not allowed in the key of an option
(and `\...Option' does not use `,' to separate several keys).
Maybe you've meant \...Options instead of \...Option.
If you'll continue, I'll give it a try, but you should expect further
and even strange error messages.

正如错误消息的帮助文本所解释的那样:

\KOMAoptions{
  ,foldmarks=false
  ,refline=nodate
  ,subject=titled
  ,fromemail=false
  ,fromlogo=false
  ,fromphone=false
  ,fromurl=false
  ,backaddress=false
  ,foldmarks=false
}

是正确的。

您的定义firsthead添加了几个重要但不想要的空格。请参见行尾的百分号 (%) 有什么用?(为什么我的宏会产生额外的空间?)以获取有关如何避免这些问题的更多信息。

还有关于使用以下内容的警告消息\date

Class scrlttr2 Warning: \date changes the internal \LaTeX date only.
(scrlttr2)              You should note that this changes the default
(scrlttr2)              value of variable `date' only as long as someone
(scrlttr2)              uses `\setkomavar` to change the content of
(scrlttr2)              variable `date'.
(scrlttr2)              Therefore, usage of `\setkomavar' is recommended
(scrlttr2)              to change the letter's date on input line 59.

所以scrlttr2你应该使用

\setkomavar{date}{\today}

或者直接删除它,因为它\today已经是默认的。

最后但同样重要的是,你有一个

makeatletter

代替

\makeatletter

在您的文件序言中。

答案2

我的建议和@Schweinebacke 的回答。但是对于注释来说它太长了...也许下面的内容有助于理解为什么refhpos在计算签名所需的缩进量(即伪长度)时是完全错误的sigindent

首先:不要只看文档中的伪长度图像,而要仔细阅读所有伪长度的描述。默认情况下,其中一些设置为特殊值,例如。0pt然后在执行期间计算这些字母元素的位置并将其分组使用\opening。这些计算的规则在文档中描述。

注意伪长度refhpos不是纸张左边缘与信体之间的距离!它只决定参考线的水平位置如果伪长度refwidth不为零。但refwidth通常设置为0pt,例如在 NF.lco 中。使用此特殊值,长度参考线的位置仅取决于选项refline及其值narrow(默认)或wide

例子:

\documentclass{scrlttr2}
\usepackage{blindtext}% dummy text
\LoadLetterOption{visualize}\showfields{address,location,refline}% visualize position of addresse and refline

%\KOMAoptions{refline=wide}% uncomment for the 2.image, default is refline=narrow

\begin{document}
\begin{letter}{recipient\\address}
\opening{Hello}
Pseudolength \texttt{refwidth} is set to \textbf{\the\useplength{refwidth}},
pseudolength \texttt{refhpos} is set to \textbf{\the\useplength{refhpos}} and
pseudolength \texttt{sigindent} is set to \textbf{\the\useplength{sigindent}}.
\par\bigskip
\blindtext
\closing{Bye}
\end{letter}
\end{document}

采用默认设置的结果reflinerefline=narrow):

在此处输入图片描述

结果refline=wide(取消注释上面代码中的该行):

在此处输入图片描述

如果设置refhpos为不同的值,布局将不会改变:

\setplength{refhpos}{10pt}

默认结果refline=narrow(参见第一个例子):

在此处输入图片描述

请注意,只有文本中的值发生了变化。

但是如果你将伪长度设置refwidth为非零值,例如

  \setplength{refwidth}{\textwidth}

你得到

在此处输入图片描述

\setplength{refhpos}{10pt}
\setplength{refwidth}{\textwidth}

在此处输入图片描述

请注意,此行为在 KOMA-Script 文档中有描述。


为了使签名与地址对齐,我们必须添加伪长度toaddrhpostoaddrindent并减去左边距(= \oddsidemargin+1pt):

\documentclass{scrlttr2}
\usepackage{xcolor}
\LoadLetterOption{visualize}\showfields{address,location,refline}% visualize position of addresse and refline

\renewcommand\raggedsignature{\raggedright}% % signature should be raggedright as in NF.lco
\setkomavar{signature}{\color{red}\smash{\rule[-\paperheight]{.4pt}{2\paperheight}}}% to show the left margin of the signature

%\setplength{toaddrhpos}{100pt}
\setplength{sigindent}{
  \useplength{toaddrhpos}+\useplength{toaddrindent}
  -\oddsidemargin-1in% remove left margin
}

\begin{document}
\begin{letter}{recipient\\address}
\opening{Hello}
Pseudolength \texttt{refhpos} is set to \textbf{\the\useplength{refhpos}},
pseudolength \texttt{toaddrhpos} is set to \textbf{\the\useplength{toaddrhpos}},
pseudolength \texttt{toaddrindent} is set to \textbf{\the\useplength{toaddrindent}} and
pseudolength \texttt{sigindent} is set to \textbf{\the\useplength{sigindent}}.
\closing{Bye}
\end{letter}
\end{document}

结果:

在此处输入图片描述

如果设置toaddrhpos为 100pt(取消注释上面代码中的该行):

在此处输入图片描述

如果设置toaddrhpos为左边距的宽度

\setplength{toaddrhpos}{\oddsidemargin+1in}

你得到

在此处输入图片描述


加载 NF.lco 时, 的值toaddrhpos变为负数。负值表示toaddrhpos从地址栏的右边缘到纸张右边缘的距离。因此,我们必须加上\paperwidth和减去地址栏的宽度 ( toaddrwidth):

\documentclass{scrlttr2}
\usepackage{xcolor}
\LoadLetterOption{visualize}\showfields{address,location,refline}% visualize position of addresse and refline
\setkomavar{signature}{\color{red}\smash{\rule[-\paperheight]{.4pt}{2\paperheight}}}% to show the left margin of the signature

\LoadLetterOption{NF}

\setplength{sigindent}{
  \useplength{toaddrhpos}+\useplength{toaddrindent}
  -\oddsidemargin-1in
}
\ifdim\useplength{toaddrhpos}<0pt
  \addtoplength{sigindent}{\paperwidth-\useplength{toaddrwidth}}
\fi


\begin{document}
\begin{letter}{recipient\\address}
\opening{Hello}
Pseudolength \texttt{refhpos} is set to \textbf{\the\useplength{refhpos}},
pseudolength \texttt{toaddrhpos} is set to \textbf{\the\useplength{toaddrhpos}},
pseudolength \texttt{toaddrindent} is set to \textbf{\the\useplength{toaddrindent}} and
pseudolength \texttt{sigindent} is set to \textbf{\the\useplength{sigindent}}.
\closing{Bye}
\end{letter}
\end{document}

结果:

在此处输入图片描述

另请参阅@Schweinebacke 的回答

您可以toaddrhpos在计算之前更改sigindent,例如

\setplength{toaddrhpos}{-100pt}

结果:

在此处输入图片描述


所以我建议@Schweineback 在他的回答中

使用最新的 KOMA-Script 版本(至少 3.26):

\setplength{sigindent}{
  \useplength{toaddrhpos}+\useplength{toaddrindent}
  -\oddsidemargin-1in
  }
\ifdim\useplength{toaddrhpos}<0pt
  \addtoplength{sigindent}{\paperwidth-\useplength{toaddrwidth}}
\fi

或者使用旧版本:

\makeatletter
\@setplength{sigindent}{\dimexpr
  \useplength{toaddrhpos}+\useplength{toaddrindent}
  -\oddsidemargin-1in
  \relax}
\ifdim\useplength{toaddrhpos}<0pt
  \@addtoplength{sigindent}{\dimexpr\paperwidth-\useplength{toaddrwidth}\relax}
\fi
\makeatother

答案3

这里的问题是,用命令将伪长度toaddrhpos设置NF.lco为负值。-10mm\@setplength{toaddrhpos}{-10mm}

这意味着的值10mm不是纸张左侧和地址字段之间的值,而是纸张右侧和地址框。通常首先打印地址框(在纸张的左侧),然后打印位置框。文件NF-lco已更改,正如您在问题中的图片中所示。

sigindent总是从打字区域的左侧计算,因此您必须sigindent自己计算所需的值。

一种可能性是:

\setplength{sigindent}{\paperwidth+\useplength{toaddrhpos}-\useplength{toaddrwidth}-\useplength{toaddrindent}-\useplength{toaddrindent}-\useplength{refhpos}}

这意味着我们计算\paperwidth减号toaddrhpos(因为它的值已经是减号了,所以我们必须在这里使用加号)减toaddrwidthrefhpos减两次toaddrindent

使用您修正后的代码中的计算结果

\documentclass[%
  paper=a4,
  fontsize=11pt,
  french,
]{scrlttr2}

\usepackage{babel}
\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc}
\usepackage{hyperref}


%\LoadLetterOption{visualize}
%\showfields{head,foot,address,location,refline}
\LoadLetterOption{NF}
\renewcaptionname{french}{\subjectname}{Objet}
\renewcaptionname{french}{\ccname}{C.c.}

\KOMAoptions{
  ,foldmarks=false
  ,refline=nodate
  ,subject=titled
  ,fromemail=false
  ,fromlogo=false
  ,fromphone=false
  ,fromurl=false
  ,backaddress=false
  ,foldmarks=false
}

% from name
\setkomavar{fromname}{Chef Abraracoursix}
\setkomafont{fromname}{\scshape}

\setkomavar{signature}{\noindent Chef Abraracoursix,\\Un chef à toujours bras long.}
\setplength{sigindent}{\paperwidth+\useplength{toaddrhpos}-\useplength{toaddrwidth}-\useplength{toaddrindent}-\useplength{toaddrindent}-\useplength{refhpos}} % <===============

% from adress
\setkomavar{fromaddress}{Place du village,\\Erqy,\\Armorique}
\setkomafont{fromaddress}{\small}

% place and location
\setkomavar{place}{Erqy}
\setkomavar{placeseparator}{, le }

% other komavar
\setkomavar{ccseparator}{}
\setkomavar*{ccseparator}{\llap{\ccname\quad}}

\date{\today}


% firsthead
\setkomavar{firsthead}{%
    \usekomafont{fromaddress}%
    \parbox[b]{\useplength{firstheadwidth}}{%
      {\usekomafont{fromname}\usekomavar{fromname}}%
      \hfill{%
        \usekomafont{placeanddate}%
        \ifkomavarempty{place}{}{\usekomavar{place}\usekomavar{placeseparator}}
        \usekomavar{date}
      }%
      \\\usekomavar{fromaddress}%
      \medskip
      \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi%
      \if@mobilephone\\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}\fi%
      \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi%
      \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi%
      \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi%
    }%
}

\renewcommand*{\raggedsignature}{\raggedright}

\hypersetup{%
  pdfauthor={Chef Abraracoursix},
  pdftitle={Invitation pour une banquet au sanglier Roti},
  pdfcreator={Emacs 26.1 (Org mode 9.1.9)}, 
  pdflang={French}
}


\begin{document}

\setkomavar{subject}{Invitation pour une banquet au sanglier Roti}

\begin{letter}{%
    Capitaine Paulus Romanicus\\
    Camp de Babaorum
    Bretany}

\opening{Le Romain,}

Dans le cadre des rapports de bon voisinage et de notre hospitalité 
légendaire, nous vous invitons à festoyer avec nous sous le grand chêne, 
du coucher du soleil à l'aube, à la prochaine plein lune pour le mariage 
de la belle Fabala et de vigourix.
\closing{À la tienne !}

\end{letter}

\end{document}

您将获得以下结果:

结果

似乎存在5pt太多差异,我不知道它来自哪里(舍入错误,我没有看到的缩进?)。在这种情况下,你可以将它们添加到计算中:

\setplength{sigindent}{\paperwidth+\useplength{toaddrhpos}-\useplength{toaddrwidth}-\useplength{toaddrindent}-\useplength{toaddrindent}-\useplength{refhpos}-5pt}

相关内容