我正在从中派生自己的类,scrartcl
但想引入变量,以便scrlttr2
类的用户设置多个值。我发现带有键、值和描述的\setkomavar
resp.\usekomavar
机制非常方便。
scrlttr2
如果我不使用该课程,有没有办法使用 komavar ?
我的实际问题
目前Undefined control sequence. \setkomavar
如果我使用的话我会得到\setkomavar
。
我的新类将有一个标题页,其中包含地址和徽标,我想使用 komavars 来设置它,就像在 scrlttr2 中所做的那样。为了定义这个标题页,我更新了命令\maketitle
,如果我从 派生我的类,则该命令不可用scrlttr2
。
答案1
随着KOMA 脚本的当前版本您将获得一个scrletter
仍处于测试阶段的包。它提供了使用文章、报告或书籍类的 KOMA 脚本编写信件的能力。因此,它定义了您想要的机制。
以下是一个简单的示例,用于使用名称设置页眉。
\documentclass{scrartcl}
\usepackage{blindtext}
\usepackage{scrletter}
\newkomavar[Autor:]{name}
\setkomavar{name}{White Gecko}
\usepackage{scrlayer-scrpage}
\ohead*{\usekomavar*{name}~\usekomavar{name}}
\begin{document}
\blinddocument
\end{document}
答案2
一个很好的 komavar 替代品是\csdef
,\csuse
如下etoolbox
所述:https://tex.stackexchange.com/a/37429/11820
一个使用场景是这样的:
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{simplevar}[2014/11/27 simplevar package]
\RequirePackage{etoolbox}
% Set a value for a key
\newcommand\setVar[2]{\csdef{simpleVarValue#1}{#2}}
% Get the value for the key
\newcommand\getVar[1]{\csuse{simpleVarValue#1}}
% Set a label for a key
\newcommand\setLabel[2]{\csdef{simpleVarLabel#1}{#2}}
% Get the label for a key
\newcommand\getLabel[1]{\csuse{simpleVarLabel#1}}
\endinput
它还可以扩展为使用与 komavar 相同的语法,或者可以引入一种命名空间来使该simpleVar…
部分可配置。