\includegraphicx 来自 \usekomavar 的动态文件名

\includegraphicx 来自 \usekomavar 的动态文件名

我正在用 scrlttr2 写一封信,它利用了 KOMA 脚本包。

在 .lco 文件中我有以下内容(这让我很头疼):

\setkomavar{signature}{\includegraphics[height=\useplength{signatureimageheight}]{\usekomavar{signatureimage}}\\
\usekomavar{fromname}}

我得到的错误是

! Undefined control sequence.
\filename@simple ...#2\\}\fi \edef \filename@base
                                                  {#1}
l.11 \closing{kthxbye,}

如果我\usekomavar{signatureimage}my-signature.pdf一切都替换,那就好了,但我怎样才能让事情变得动态呢?

\usekomavar{signatureimage}生产my-signature.pdf

平均能量损失(实际上:产生错误的最小示例):

信件.tex

\documentclass[a4paper]{scrlttr2}
\usepackage{graphicx}
\usepackage[dutch]{babel}
\begin{document}
\begin{letter}{Recipient\\
Address}
\LoadLetterOption{my-details}
\setkomavar{subject}{subject}
\opening{Hi,}
Lorem ipsum.
\closing{kthxbye,} 
\end{letter} 
\end{document}

我的详细信息.lco:

\ProvidesFile{my-details.lco}[2013/08/16 lco (My Details)]
\LoadLetterOption{letter-p1}

\setkomavar{fromname}{Me Myself}
\setkomavar{fromaddress}{My Address}
\setkomavar{signatureimage}{my-signature.pdf}

\LoadLetterOption{letter-p2}

字母-p1.lco:

\ProvidesFile{letter-p2.lco}[2013/08/16 lco (letter-p2)]
\KOMAoptions{paper=a4,foldmarks=true,foldmarks=mvp,subject=titled}
\LoadLetterOption{DINmtext}

\newkomavar{signatureimage}
\setkomavar*{signatureimage}{filename of signaure image (including extension)}

\@newplength{signatureimageheight}
\@setplength{signatureimageheight}{\useplength{sigbeforevskip}}

字母-p2.lco(这就是动态文件搞砸的地方)

\ProvidesFile{letter-p2.lco}[2013/08/16 lco (letter-p2)]

\ifkomavarempty{signatureimage}{%true-code
}
{%false-code
    \setkomavar{signature}{\includegraphics[height=\useplength{signatureimageheight}]{\usekomavar{signatureimage}}\\
\usekomavar{fromname}}
    \@setplength{sigbeforevskip}{0cm}
}

答案1

\usekomavar不能直接用作文件名\includegraphics

  • 这是不是可扩展,它是通过 定义的\DeclareRobustCommand
  • 文件名解析器需要看到分隔扩展名的点。

解决方法:

\usekomavar有一个可选参数,可用于定义将扩展为文件名的临时宏。扩展通过以下方式完成\edef

\usekomavar[\edef\tmp]{signatureimage}%
\includegraphics[%
    height=50mm,%
]{\tmp}%

\tmpLaTeX 的文件名解析器会扩展文件名的第一个标记,因此如果扩展一次,就会看到文件扩展名。

相关内容