13.07.2015 Views

The kvoptions package

The kvoptions package

The kvoptions package

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

[2010/12/02 v3.9] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45[2010/12/23 v3.10] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45[2011/06/30 v3.11] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4612 Index 461 IntroductionFirst I want to recommend the very good review article “A guide to key-valuemethods” by Joseph Wright [1]. It introduces the different key-value <strong>package</strong>sand compares them.1.1 <strong>The</strong> beginningThis <strong>package</strong> <strong>kvoptions</strong> addresses class or <strong>package</strong> writers that want to allow theirusers to specify options as key value pairs, e.g.:\documentclass[verbose=false,name=me]{myclass}\use<strong>package</strong>[format=print]{mylayout}Prominent example is <strong>package</strong> hyperref, probably the first <strong>package</strong> that offers thisservice. It’s \ProcessOptionsWithKV is often copied und used in other <strong>package</strong>s,e.g. <strong>package</strong> helvet that uses this interface for its option scaled.However copying code is not the most modern software development technique.And hyperref’s code for \ProcessOptionsWithKV was changed to fix bugs. <strong>The</strong>version used in other <strong>package</strong>s depends on the time of copying and the awarenessof hyperref’s changes. Now the code is sourced out into this <strong>package</strong> and availablefor other <strong>package</strong> or class writers.1.2 OverviewPackage <strong>kvoptions</strong> connects <strong>package</strong> keyval with L A TEX’s <strong>package</strong> and class options:Package keyval Package <strong>kvoptions</strong> L A TEX kernel\define@key2 Usage\DeclareVoidOption\DeclareStringOption\DeclareBoolOption\DeclareComplementaryOption\DisableKeyvalOption\DeclareDefaultOption\ProcessKeyvalOptionsOption patch\SetupKeyvalOptions\DeclareOption\DeclareOption*\ProcessOptions*Class/<strong>package</strong>option system2.1 Process options2.1.1 \ProcessKeyvalOptions\ProcessKeyvalOptions {⟨family⟩}\ProcessKeyvalOptions *This command evaluates the global or local options of the <strong>package</strong> that are definedwith keyval’s interface within the family ⟨family⟩. It acts the same way as L A TEX’s3

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!