在 scrlttr2 之外使用 komavar

在 scrlttr2 之外使用 komavar

我正在从中派生自己的类,scrartcl但想引入变量,以便scrlttr2类的用户设置多个值。我发现带有键、值和描述的\setkomavarresp.\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…部分可配置。

相关内容