% \iffalse meta comment % File: slantsc.dtx Copyright (C) 2003, 2012 Harald Harders % \fi % % \iffalse % %<*driver> \documentclass{ltxdoc} \usepackage[T1]{fontenc} \IfFileExists{slantsc.sty}{\usepackage{slantsc} \let\slantscSTYfound\active}{\GenericWarning{slantsc.dtx}{Package file slantsc.sty not found (Documentation will be messed up!^^J^^A Generate slantsc.sty by (La)TeXing slantsc.ins, process slantsc.dtx again)^^J}\stop} \usepackage{longtable} \GetFileInfo{slantsc.sty} \title{The \texttt{slantsc} package} \author{Harald Harders\\\texttt{harald.harders@gmx.de}} \date{Version \fileversion, \filedate, printed \today} \newlength{\tempdima}% \makeatletter \renewenvironment{table}[1][]{% \@float{table}[#1]% \centering% \setlength{\tempdima}{\abovecaptionskip}% \setlength{\abovecaptionskip}{\belowcaptionskip}% \setlength{\belowcaptionskip}{\tempdima}% }{% \end@float } \makeatother \EnableCrossrefs \CodelineIndex \DoNotIndex{\def,\edef,\let,\newcommand,\newenvironment,\newcounter} \DoNotIndex{\setcounter,\space,\if,\else,\fi,\empty,\@empty,\ifx,\fi} \DoNotIndex{\ifnum,\fi,\expandafter,\DeclareRobustCommand,\ProvidesPackage} \DoNotIndex{\NeedsTeXFormat,\newif,\not@math@alphabet,\fontshape,\relax} \DoNotIndex{\selectfont} \CodelineNumbered \RecordChanges \CheckSum{146} \begin{document} \DocInput{slantsc.dtx} \end{document} % % \fi % % \changes{2.11}{2012/01/01}{Update e-mail address}% % \changes{2.10}{2003/11/09}{State date and version explicitely in % \cs{ProvidesPackage}}% % % \maketitle % \begin{abstract} % \noindent % This package enables the use of small capitals in different font % shapes, e.g., slanted or bold slanted for all fonts that provide % appropriate font shapes. % The only prerequisite is that the corresponding |fd| file has to % define the font shapes |scsl| resp.\ |scit| for slanted resp.\ % italic small capitals. % \end{abstract} % % \tableofcontents % % \section*{Copyright} % Copyright 2003, 2012 Harald Harders. % % This program can be redistributed and/or modified under the terms % of the LaTeX Project Public License Distributed from \textsc{ctan} % archives in directory macros/latex/base/lppl.txt; either % version 1 of the License, or any later version. % % % \section{The user interface} % % To use this package place % \begin{verbatim} % \usepackage{slantsc} % \end{verbatim} % in the preamble of your document. No options are necessary. % % In \LaTeX, you can combine different font parameters like a bold % series with an italic shape, % \begin{verbatim} % {\bfseries\itshape bold italic text} % \end{verbatim} % to get {\bfseries\itshape bold italic text}. % But you are not able to combine two font shapes. % % Since \emph{italic, slanted,} and \emph{small caps} are shapes, you % are not able write in {\slshape\scshape slanted small capitals}, for % instance. % This problem is avoided by the package |smallcap|, available from the % \textsc{ctan} network, which redefines small caps to be a font % family rather than a shape. % But what to do if your font provides small capitals in roman style % and in sans serifs? % You are not able to access the sans serif version, then. % % The |slantsc| package has a different approach. % It preserves small caps to be a font shape, but it enables to % combine the small caps shape with the other shapes (upright, italic, % slanted). % \DescribeMacro{\upshape}% % \DescribeMacro{\itshape}% % \DescribeMacro{\slshape}% % \DescribeMacro{\scshape}% % Thus, you use the normal font shape switching commands % \cs{upshape}, \cs{itshape}, \cs{slshape}, and \cs{scshape}. % The first three commands act as usual among themselves. % But if you use the \cs{scshape} command, it just adds the % information "`small capitals"' to the current font shape. % % For example, if the current font shape is italic and you use % \cs{scshape}, the following text is written in italic small % capitals: % \begin{verbatim} %\itshape This is italic text, \scshape now additionally in Small Capitals. % \end{verbatim} % This leads to: % \begin{quote} % \itshape This is italic text, \scshape now additionally in Small % Capitals. % \end{quote} % If you are in a small-capitals area, using one of the other font % switching commands does not affect the small capitals status, but % the rest of the font shape: % \begin{verbatim} %\itshape\scshape This is italic Small Capitals text, \upshape now Upright. % \end{verbatim} % This leads to: % \begin{quote} % \itshape\scshape This is italic Small Capitals text, \upshape now % Upright. % \end{quote} % % As usual, the change of font shape is terminated by the end of the % group, e.g., by using braces: % \begin{verbatim} %\itshape This is italic {\scshape with Small Capitals} and without. % \end{verbatim} % This leads to: % \begin{quote} % \itshape This is italic {\scshape with Small Capitals} and without. % \end{quote} % Sometimes, you may want to switch off small capitals without using a % group. % \DescribeMacro{\noscshape}% % To be able to do so, this package provides the \cs{noscshape} % command, which works as follows: % \begin{verbatim} %\itshape This is italic \scshape with Small Capitals \noscshape and without. % \end{verbatim} % This leads to: % \begin{quote} % \itshape This is italic \scshape with Small Capitals \noscshape and without. % \end{quote} % % \DescribeMacro{\textup}% % \DescribeMacro{\textit}% % \DescribeMacro{\textsl}% % \DescribeMacro{\textsc}% % \DescribeMacro{\emph}% % Instead of the font switching commands you may also use the % \cs{text}\ldots commands \cs{textup}, \cs{textit}, \cs{textsl}, % \cs{textsc} as well as the \cs{emph} command, e.g. % \begin{verbatim} %This is \emph{the person \textsc{Harald Harders} who wrote} this %documentation. % \end{verbatim} % which leads to: % \begin{quote} % This is \emph{the person \textsc{Harald Harders} who wrote} this % documentation. % \end{quote} % % \DescribeMacro{\shapedefault}% % \changes{2.00}{2003/09/17}{Describe \cs{shapedefault} command}% % If you want another default font than the default, you may redefine % the \cs{shapedefault} command. % If you, for instance, want to use an italic small caps font as % default font, you may simply use % \begin{verbatim} % \renewcommand\shapedefault{\scdefault\itdefault} % \end{verbatim} % or % \begin{verbatim} % \renewcommand\shapedefault{\scitdefault} % \end{verbatim} % in the preamble of your document. % Both variants are equivalent. % Notice, that you have to use the command \cs{scdefault} before the % other command for combined font shapes. % If you want an upright small caps font as default, just use: % \begin{verbatim} % \renewcommand\shapedefault{\scdefault} % \end{verbatim} % You may not use \cs{scdefault}\cs{updefault} as argument! % To switch to the default font, you may use the \cs{defaultfont} % command. % % \DescribeMacro{\fontshape}% % \changes{2.00}{2003/09/17}{Describe \cs{fontshape} command}% % If you want to set the font shape directly, using the \cs{fontshape} % command, e.g.: % \begin{verbatim} % \fontshape{\scdefault\itdefault}\selectfont % \end{verbatim} % The argument of this command is used in the same way as for the % \cs{shapedefault} command. % % % \section{Using other fonts than European Modern} % % This package works with all fonts that provide slanted and italic % versions of the small capitals.\footnote{If bold versions are also % available, they are of course also supported.} % It is important that these font shapes are declared in a specific % way that |slantsc| can find them. % % |slantsc| uses two additional font shapes |scsl| and |scit| % which are slanted small caps and italic small caps, % respectively.\footnote{In this section, I assume that you haven't % redefined the default values for the different shapes. If you have % done so, you have do adobt all strings according to your changes.} % These font shapes have to be declared in the corresponding file with % the file name \meta{encoding}\meta{font family}|.fd|, e.g., % |t1lmr.fd| for the Latin Modern fonts. % For instance, the Latin Modern font family (version 0.86) provides % slanted small capitals. % The corresponding entry in the |fd| file looks like this: % \begin{verbatim} %\DeclareFontShape{T1}{lmr}{m}{scsl}% % {<-> cork-lmcsco10}{} % \end{verbatim} % This command declares to use the font |cork-lmcsco10| for the % encoding |T1|, the font family |lmr|, the font series |m| (normal) % and the font shape |scsl| (slanted small caps). % % Unfortunately, Latin Modern does not contain the bold variant of the % slanted small caps. % But if it had it, the entry would look like that: % \begin{verbatim} %\DeclareFontShape{T1}{lmr}{bx}{scsl}% % {<-> ...}{} % \end{verbatim} % % Since nearly no font family will contain real italic small caps % variants, the best approach is to substitute them by slanted % variants. % This could be done for Latin Modern by the following commands: % \begin{verbatim} %\DeclareFontShape{T1}{lmr}{m}{scit}{<->ssub * lmr/m/scsl}{} %\DeclareFontShape{T1}{lmr}{bx}{scit}{<->ssub * lmr/bx/scsl}{} % \end{verbatim} % % With the OT1 encoded Computer Modern fonts, slanted small capitals % are not available, since these fonts do not contain them. % Nevertheless, the font encoding is not forced to T1 by this package % because it works with all encodings, if the font shapes are % present. % % \StopEventually{\PrintChanges \PrintIndex} % % % \section{The implementation} % \iffalse %<*package> % \fi % Heading of the package: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{slantsc} [2012/01/01 v2.11 Provide Slanted an Italic Small Caps] % \end{macrocode} % More robust string comparisons. % \begin{macrocode} \RequirePackage{ifthen} % \end{macrocode} % Declare additional font shapes for European Computer Modern. % I think, this should normally go to |t1cmr.fd|, but it is never % read, since it is hardcoded to the format file. % \begin{macrocode} \DeclareFontFamily{T1}{cmr}{} \DeclareFontShape{T1}{cmr}{m}{scsl}% {<5><6><7><8><9><10><10.95><12><14.4>% <17.28><20.74><24.88><29.86><35.83>genb*ecsc}{} \DeclareFontShape{T1}{cmr}{bx}{scsl}% {<5><6><7><8><9><10><10.95><12><14.4>% <17.28><20.74><24.88><29.86><35.83>genb*ecoc}{} % \end{macrocode} % Since European Computer Modern does not have real italic Small Caps % substitute them silently by slanted ones. % \begin{macrocode} \DeclareFontShape{T1}{cmr}{m}{scit}{<->ssub * cmr/m/scsl}{} \DeclareFontShape{T1}{cmr}{bx}{scit}{<->ssub * cmr/bx/scsl}{} % \end{macrocode} % \begin{macro}{\scitdefault} % \changes{2.00}{2003/09/17}{Use commands for combined shapes}% % Default shortcut for italic small caps. % \begin{macrocode} \providecommand*\scitdefault{\scdefault\itdefault} % \end{macrocode} % \end{macro} % \begin{macro}{\scsldefault} % \changes{2.00}{2003/09/17}{Use commands for combined shapes}% % Default shortcut for slanted small caps. % \begin{macrocode} \providecommand*\scsldefault{\scdefault\sldefault} % \end{macrocode} % \end{macro} % \begin{macro}{\upshape} % \changes{2.00}{2003/09/17}{Avoid using booleans because that causes % problems with explicit use of \cs{fontshape}}% % Redefine the macro \cs{upshape} that switches to an upright font. % If small caps are ``on'', switch to ordinary small caps, otherwise % switch to the normal upright font. % \begin{macrocode} \DeclareRobustCommand\upshape{% \not@math@alphabet\upshape\relax % \end{macrocode} % Font shape is with small caps. % \begin{macrocode} \ifthenelse{\equal{\f@shape}{\scdefault}\or \equal{\f@shape}{\scitdefault}\or\equal{\f@shape}{\scsldefault}}{% \fontshape\scdefault }{% % \end{macrocode} % Current font shape is without small caps or not known. % \begin{macrocode} \fontshape\updefault }% \selectfont } % \end{macrocode} % \end{macro} % \begin{macro}{\slshape} % \changes{2.00}{2003/09/17}{Avoid using booleans because that causes % problems with explicit use of \cs{fontshape}}% % Redefine the macro \cs{slshape} that switches to a slanted font. % If small caps are ``on'', switch to slanted small caps, otherwise % switch to the normal slanted font. % \begin{macrocode} \DeclareRobustCommand\slshape{% \not@math@alphabet\slshape\relax % \end{macrocode} % Font shape is with small caps. % \begin{macrocode} \ifthenelse{\equal{\f@shape}{\scdefault}\or \equal{\f@shape}{\scitdefault}\or\equal{\f@shape}{\scsldefault}}{% \fontshape\scsldefault }{% % \end{macrocode} % Current font shape is without small caps or not known. % \begin{macrocode} \fontshape\sldefault }% \selectfont } % \end{macrocode} % \end{macro} % \begin{macro}{\itshape} % \changes{2.00}{2003/09/17}{Avoid using booleans because that causes % problems with explicit use of \cs{fontshape}}% % Redefine the macro \cs{itshape} that switches to an italic font. % If small caps are ``on'', switch to italic small caps, otherwise % switch to the normal italic font. % \begin{macrocode} \DeclareRobustCommand\itshape{% \not@math@alphabet\itshape\relax % \end{macrocode} % Font shape is with small caps. % \begin{macrocode} \ifthenelse{\equal{\f@shape}{\scdefault}\or \equal{\f@shape}{\scitdefault}\or\equal{\f@shape}{\scsldefault}}{% \fontshape\scitdefault }{% % \end{macrocode} % Current font shape is without small caps or not known. % \begin{macrocode} \fontshape\itdefault }% \selectfont } % \end{macrocode} % \end{macro} % \begin{macro}{\scshape} % \changes{2.00}{2003/09/17}{Avoid using booleans because that causes % problems with explicit use of \cs{fontshape}}% % Redefine the macro \cs{scshape} that switches to small capitals. % If the actual font is italic, switch to italic small caps, if it is % slanted, switch to slanted small caps, otherwise switch to ordinary % small caps. % \begin{macrocode} \DeclareRobustCommand\scshape{% \not@math@alphabet\scshape\relax % \end{macrocode} % Font shape is with small caps. % Nothing to do. % \begin{macrocode} \ifthenelse{\equal{\f@shape}{\scdefault}\or \equal{\f@shape}{\scitdefault}\or\equal{\f@shape}{\scsldefault}}{% }{% % \end{macrocode} % Current font shape is without small caps or not known. % % If current font is italic, switch to italic small caps. % \begin{macrocode} \ifthenelse{\equal{\f@shape}{\itdefault}}{% \fontshape\scitdefault }{% % \end{macrocode} % If current font is slanted, switch to slanted small caps. % \begin{macrocode} \ifthenelse{\equal{\f@shape}{\sldefault}}{% \fontshape\scsldefault }{% % \end{macrocode} % If current font is either upright or unknown, switch to upright % small caps. % \begin{macrocode} \fontshape\scdefault }% }% }% \selectfont } % \end{macrocode} % \end{macro} % \begin{macro}{\noscshape} % \changes{2.00}{2003/09/17}{Avoid using booleans because that causes % problems with explicit use of \cs{fontshape}}% % Normally, using one of the font-shape commands \cs{upshape}, % \cs{slshape}, \cs{itshape}, and \cs{scshape} switches from one font % shape to another, forgetting the old font shape. % The new approach is switches only between \cs{upshape}, % \cs{slshape}, and \cs{itshape}. % \cs{scshape} is ``added'' to the other font shape information. % Thus, you are not able to use either of the commands \cs{upshape}, % \cs{slshape}, and \cs{itshape} to switch off small caps again. % Therefor, you may use the command \cs{noscshape} which preserves the % used font shape but moves from small caps to ordinary characters. % \begin{macrocode} \DeclareRobustCommand\noscshape{% \not@math@alphabet\noscshape\relax % \end{macrocode} % Font shape is with small caps. % \begin{macrocode} \ifthenelse{\equal{\f@shape}{\scdefault}\or \equal{\f@shape}{\scitdefault}\or\equal{\f@shape}{\scsldefault}}{% % \end{macrocode} % If current font is italic small caps, switch to italic. % \begin{macrocode} \ifthenelse{\equal{\f@shape}{\scitdefault}}{% \fontshape\itdefault }{% % \end{macrocode} % If current font is slanted small caps, switch to slanted. % \begin{macrocode} \ifthenelse{\equal{\f@shape}{\scsldefault}}{% \fontshape\sldefault }{% % \end{macrocode} % If current font is upright small caps, switch to upright. % \begin{macrocode} \fontshape\updefault }% }% }{% % \end{macrocode} % Current font shape is without small caps or not known. % Nothing to do. % \begin{macrocode} }% \selectfont } % \end{macrocode} % \end{macro} % \iffalse % % \fi % \Finale