diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/komacv-rg')
4 files changed, 1681 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/komacv-rg/komacv-addons.dtx b/Master/texmf-dist/source/latex/komacv-rg/komacv-addons.dtx new file mode 100644 index 00000000000..bfeeb84b527 --- /dev/null +++ b/Master/texmf-dist/source/latex/komacv-rg/komacv-addons.dtx @@ -0,0 +1,149 @@ +% \iffalse meta-comment +% +% Copyright (C) 2017 by Richard Gay <richard.gay@t-online.de> +% ------------------------------------------------------- +% +% This file may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.2 +% of this license or (at your option) any later version. +% The latest version of this license is in: +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.2 or later is part of all distributions of LaTeX +% version 1999/12/01 or later. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{komacv-addons.dtx} +%</driver> +%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%<package>\ProvidesPackage{komacv-addons} +%<*package> + [2017/08/30 v1 Various small addons and fixes to komacv] +%</package> +% +%<*driver> +\documentclass{ltxdoc} +\usepackage[columns=2]{idxlayout} +\usepackage{showexpl} +\usepackage{xspace} +\newcommand\ThisPackage{\textsf{komacv-addons}\xspace} +\usepackage{hypdoc} +\usepackage[capitalise,noabbrev,nameinlink]{cleveref} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{komacv-addons.dtx} + \PrintChanges + \PrintIndex +\end{document} +%</driver> +% \fi +% +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \changes{v1}{2017/08/30}{Initial documented version} +% +% \GetFileInfo{komacv-addons.dtx} +% +% \DoNotIndex{\newcommand,\newenvironment,\def,\gdef,\edef} +% +% \title{The \ThisPackage Package\thanks{This document +% corresponds to \ThisPackage~\fileversion, dated \filedate. +% The package is available online at +% \url{http://www.ctan.org/pkg/komacv-rg} and +% \url{https://github.com/Ri-Ga/komacv-rg}.}} +% \author{Richard Gay \\ \texttt{richard.gay@t-online.de}} +% +% \maketitle +% +% \section{Introduction} +% \label{sec:Introduction} +% +% This package provides a few extensions and fixes to the \textsf{komacv} +% class. +% +% \StopEventually{} +%\iffalse +%<*package> +%\fi +% +% \section{Extensions} +% +% \begin{macro}{\Signature} +% The |\Signature|\oarg{width} draws a line of width \meta{width} (default: +% $38.2\%$ of the text width (where $38.2\%=1-\frac{1}{\varphi}$, with $\varphi$ +% being the golden ratio). +% \begin{macro}{\signaturecity} +% Below the line, the macro puts the name of the city, which is expected in the +% |\signaturecity| macro, and the current date (via |\today|). +% Use |\renewcommand{\signaturecity}{...}| to specify the city. +% \begin{macro}{\beforesigvspace} +% Before the signature line, a vertical space of |\beforesigvspace| (default: +% 3cm) is inserted. Use |\renewcommand{\beforesigvspace}{...}| to specify +% another distance. +% \begin{macrocode} +\newcommand*\signaturecity{} +\newcommand*\beforesigvspace{3cm} +\newcommand\Signature[1][0.382\textwidth]{% + \par + \begin{tabular}{@{}p{#1}@{}} + \rule{0pt}{\beforesigvspace}\\\hline + \signaturecity, \today\hfill + \end{tabular}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{\textsf{komacv} Fixes} +% +% The construction of |\cvitem| based on a |tabular| environment seems to +% sometimes produce undesired vertical space below a sequence of |\cvitem|s. +% The following fix redefines |\cvitem|, based on its original definition, to +% fix this vertical spacing problem. +% \begin{macrocode} +\RequirePackage{letltxmacro} +\LetLtxMacro{\kcvml@origcvitem}{\cvitem} +\renewcommand*{\cvitem}[3][\@afterelementsvspace]{% + \kcvml@origcvitem[#1]{#2}{\@minipagetrue #3}} +% \end{macrocode} +% +% We also fix the default setup of |\@listdbitemmaincolwidth|. The only change +% is that we also subtract |\@sepcolwidth| from |\@maincolwidth|, because +% |\cvlistdoubleitem| does include a horizontal separation of that width. +% \begin{macrocode} +\AtEndPreamble{ + \ifdimequal{\listdbitemmaincolwidth}{0pt}{% + \setlength{\@listdbitemmaincolwidth} + {\@maincolwidth-\@sepcolwidth-\@listitemsymbolwidth}% + \setlength{\@listdbitemmaincolwidth}{0.475\@listdbitemmaincolwidth}% + }{}% +} +% \end{macrocode} +% +%\iffalse +%</package> +%\fi +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/komacv-rg/komacv-lco.dtx b/Master/texmf-dist/source/latex/komacv-rg/komacv-lco.dtx new file mode 100644 index 00000000000..9ae60639f6d --- /dev/null +++ b/Master/texmf-dist/source/latex/komacv-rg/komacv-lco.dtx @@ -0,0 +1,616 @@ +% \iffalse meta-comment +% +% Copyright (C) 2017 by Richard Gay <richard.gay@t-online.de> +% ------------------------------------------------------- +% +% This file may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.2 +% of this license or (at your option) any later version. +% The latest version of this license is in: +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.2 or later is part of all distributions of LaTeX +% version 1999/12/01 or later. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{komacv-lco.dtx} +%</driver> +%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%<package>\ProvidesPackage{komacv-lco} +%<*package> + [2017/08/30 v0.9 Letter class options usable for komacv] +%</package> +% +%<*driver> +\documentclass{ltxdoc} +\usepackage[columns=2]{idxlayout} +\usepackage{xspace} +\usepackage{enumitem} +\usepackage{keyvaltable} +\usepackage{showexpl} +\lstset{gobble=2,frame=trbl,backgroundcolor=\color{black!5!white},width=0.55\textwidth} +\lstset{basicstyle=\footnotesize\fontfamily{pcr}\selectfont} +\lstset{explpreset={columns=fixed,numbers=none,language={}}} +\lstset{preset={\small\sffamily},overhang=3cm,pos=r,varwidth=false} +\usepackage{pbox} +\usepackage{csquotes}\MakeOuterQuote{"} +\usepackage{filecontents} +\begin{filecontents*}{demo.lco} +\ProvidesFile{demo.lco} +\KOMAoptions{fromemail=true,fromphone=false,frommobilephone=true} + +\setkomavar{fromfirstname}{John} +\setkomavar{fromfamilyname}{Doe} +\setkomavar{fromaddressstreet}{Main Street 1} +\setkomavar{fromaddresscity}{12345 Springfield} + +\setkomavar{fromphone}[\Telefon~]{555\ 123456} +\setkomavar{frommobilephone}[\Mobilefone~]{555\ 98765} +\setkomavar{fromemail}[\Letter~]{john.doe@example.com} +\setkomavar{place}{Springfield} + +\setkomavar{fromgithub}{\httpslink{github.com/JohnDoe}} +\setkomavar{fromlinkedin}{\httpslink{linkedin.com/in/JohnDoe}} +\setkomavar{fromurl}{www.example.com/~Doe} +\end{filecontents*} +\newcommand\NiceDescribeStuff[2]{% #1=margin text, #2=body text + \medskip\par\noindent\leavevmode% + \marginpar{\hfill\hbox to 0pt{\hss\pbox[t]{4\marginparwidth}{\ttfamily #1}}% + \hspace*{-0.85\marginparsep}}% NOTE: the 0.85 fixes an otherwise too close placement + \ifstrempty{#2}{\ignorespaces}{#2\smallskip\\}} +\newcommand\NiceDescribeEnv[3][]{% #1=index list, #2=envname, #3=parameters + \NiceDescribeStuff{% + \textcolor{gray}{\cs{begin}}\string{#2\string}\\ + \textcolor{gray}{\cs{end}}\string{#2\string}}{#3}% + \ifstrempty{#1} + {\SpecialEnvIndex{#1}}% + {\forcsvlist{\SpecialEnvIndex}{#1}}% + \ignorespaces} +\newcommand\NiceDescribeMacro[2]{% #1=macro, #2=parameters + \NiceDescribeStuff{\hbox to 0pt{\hss\string#1}}{#2}% + \SpecialUsageIndex{#1}\ignorespaces} +\newcommand\NiceDescribeConstant[1]{% #1=constant + \NiceDescribeStuff{#1\quad\kern 0pt\relax}{}} +\newcommand\ThisPackage{\textsf{komacv-lco}\xspace} +\usepackage{hypdoc} +\usepackage[capitalise,noabbrev,nameinlink]{cleveref} +\usepackage{komacv-lco} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{komacv-lco.dtx} + \PrintChanges + \PrintIndex +\end{document} +%</driver> +% \fi +% +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \changes{v0.9}{2017/08/30}{Initial version} +% +% \GetFileInfo{komacv-lco.dtx} +% +% \DoNotIndex{\newcommand,\newenvironment,\def,\gdef,\edef} +% +% \title{The \ThisPackage Package\thanks{This document +% corresponds to \ThisPackage~\fileversion, dated \filedate. +% The package is available online at +% \url{http://www.ctan.org/pkg/komacv-rg} and +% \url{https://github.com/Ri-Ga/komacv-rg}.}} +% \author{Richard Gay \\ \texttt{richard.gay@t-online.de}} +% +% \maketitle +% +% \section{Introduction} +% \label{sec:Introduction} +% +% The \ThisPackage package provides means for unifying the input data to a CV +% made with \textsf{komacv} and to a cover letter made with \textsf{scrlttr2}. +% Concretely: +% \begin{itemize}[noitemsep] +% \item When the \ThisPackage package is used within a document of the +% \textsf{scrlttr2} class (e.g., a cover letter), it defines KOMA variables +% \textsf{komacv}'s data fields such as |github| and |linkedin|. Values for +% these variables can therefore be specified in letter-class-option (LCO) +% files (see the KOMA manual for more on these files). +% \item When the \ThisPackage package is used within CV of the \textsf{komacv} +% class, it provides a macro for loading LCO files and setting the +% \textsf{komacv} variables based on these macros. +% \item When the \ThisPackage package is used with neither \textsf{komacv} nor +% \textsf{scrlttr2} (e.g., a cover sheet), it provides the KOMA variables and +% macros for accessing them in the document. +% \end{itemize} +% +% \section{Usage} +% +% The following code shows some basic usage of the \ThisPackage package. +% The package provides the |\LoadLetterOption| macro for loading various +% variables. The content of the variables can be displayed, e.g., via the +% |\usekomavar| macro. The \ThisPackage package provides these macros, whose +% interfaces originate from the \textsf{scrlttr2} class, for use with other +% classes than \textsf{scrlttr2} -- particularly including \textsf{komacv}. +% +% \begin{LTXexample} +% \usepackage{komacv-lco} +% \LoadLetterOption{demo} +% +% \begin{document} +% \usekomavar{fromname}\\ +% \usekomavar*{fromphone} \usekomavar{fromphone}\\ +% \usekomavar*{fromgithub} \usekomavar{fromgithub} +% \end{document} +% \end{LTXexample} +% +% The content of the LCO file, \texttt{demo.lco}, is displayed in +% \cref{fig:lco-example}. This file shows many of the variables defined. +% The remainder of this section provides the complete list of macros and +% variables made available by \ThisPackage. +% +% \begin{figure} +% \lstinputlisting{demo.lco} +% \caption{\texttt{demo.lco}} +% \label{fig:lco-example} +% \end{figure} +% +% +% \subsection{Variables} +% +% The \ThisPackage package provides a set of variables that can be set in LCO +% files and can be used in \textsf{scrlttr2} letters, \textsf{komacv} CVs, and +% other \LaTeX{} documents. +% \Cref{tab:variables} shows the set of variables in alphabetic order. +% \begin{itemize} +% \item Most of the variables correspond to a macro that the \textsf{komacv} +% class defines and that is displayed in the second column of the +% \lcnamecref{tab:variables}. The \ThisPackage package ensures that when the +% value of a variable is set (via |\setkomavar|), the corresponding +% \textsf{komacv} macro is updated as well. +% Note that the macros are only defined in documents that use the +% \textsf{komacv} class. Documents based on another class can access the +% respective variables via |\usekomavar|. +% \item Many of the variables are also defined by the \textsf{scrlttr2} class. +% The third column of the \lcnamecref{tab:variables} shows which of the +% variables these are. The \ThisPackage package makes all of the variables +% available for use in documents that use the \textsf{scrlttr2} class. +% \item Some of the variables have a symbol assigned to them, as shown in the +% fourth column of the \lcnamecref{tab:variables}. The symbols are those that +% the \textsf{komacv} class uses. +% \item Some of the variables have KOMA options of the same name. These +% variables can be used for disabling the display of the respective variable's +% content. +% \item Two variables (from \textsf{scrlttr2}) have default values that are +% based on other, more fine-grained variables (from \textsf{komacv}). These +% variables are marked in the rightmost column of the +% \lcnamecref{tab:variables}. +% Concretely: +% \begin{itemize}[nosep] +% \item[$\star$] +% The `fromaddress' variable by default is set to a two-line +% combination of the contents of the `fromaddressstreet' and +% `fromaddresscity' variables. +% \item[$\star\star$] +% The `fromname' variable by default is set to the concatenation of the +% contents of the `fromfirstname' and the `fromfamilyname' variables. +% \end{itemize} +% \end{itemize} +% +% \begin{table} +% \NewKeyValTable{variables}{ +% name: align=l, head=\small\textbf{variable name}; +% macro: align=l, head=\small\textbf{\textsf{komacv} macro}; +% letter: align=c, head=\small\textbf{\textsf{scrlttr2}}; +% symbol: align=c, head=\small\textbf{symbol}; +% option: align=c, head=\small\textbf{option}; +% default:align=c, head=\small\textbf{default}; +% } +% \begin{KeyValTable}{variables} +% \Row{name=fromacadtitle, macro=\cs{acadtitle}, letter=no, option=no, symbol=\usekomavar*{fromacadtitle}} +% \Row{name=fromaddress, macro=\cs{address}, letter=yes, option=no, symbol=\usekomavar*{fromaddress}, default=$\star$} +% \Row{name=fromaddresscity, macro=\cs{addresscity}, letter=no, option=no, symbol=\usekomavar*{fromaddresscity}} +% \Row{name=fromaddressstreet, macro=\cs{addressstreet}, letter=no, option=no, symbol=\usekomavar*{fromaddressstreet}} +% \Row{name=fromemail, macro=\cs{email}, letter=yes, option=yes, symbol=\usekomavar*{fromemail}} +% \Row{name=fromextrainfo, macro=\cs{extrainfo}, letter=no, option=yes, symbol=\usekomavar*{fromextrainfo}} +% \Row{name=fromfax, macro=\cs{faxnr}, letter=yes, option=yes, symbol=\usekomavar*{fromfax}} +% \Row{name=fromfacebook, macro=\cs{facebook}, letter=no, option=yes, symbol=\usekomavar*{fromfacebook}} +% \Row{name=fromfamilyname, macro=\cs{familyname}, letter=no, option=no, symbol=\usekomavar*{fromfamilyname}} +% \Row{name=fromfirstname, macro=\cs{firstname}, letter=no, option=no, symbol=\usekomavar*{fromfirstname}} +% \Row{name=fromgithub, macro=\cs{github}, letter=no, option=yes, symbol=\usekomavar*{fromgithub}} +% \Row{name=fromlinkedin, macro=\cs{linkedin}, letter=no, option=yes, symbol=\usekomavar*{fromlinkedin}} +% \Row{name=frommobilephone, macro=\cs{mobile}, letter=yes, option=yes, symbol=\usekomavar*{frommobilephone}} +% \Row{name=fromname, letter=yes, option=no, symbol=\usekomavar*{fromname}, default=$\star\star$} +% \Row{name=fromphone, macro=\cs{phonenr}, letter=yes, option=yes, symbol=\usekomavar*{fromphone}} +% \Row{name=fromtwitter, macro=\cs{twitter}, letter=no, option=yes, symbol=\usekomavar*{fromtwitter}} +% \Row{name=fromurl, macro=\cs{homepage}, letter=yes, option=yes, symbol=\usekomavar*{fromurl}} +% \Row{name=location, letter=yes, option=no, symbol=\usekomavar*{location}} +% \Row{name=place, letter=yes, option=no, symbol=\usekomavar*{place}} +% \end{KeyValTable} +% \caption{Variables for use in letter options} +% \label{tab:variables} +% \end{table} +% +% +% \subsection{Macros} +% +% The following macros imitate the behavior of \textsf{scrlttr2}. For a +% documentation of the macros, we refer to the KOMA manual. +% \begin{itemize} +% \item +% |\newkomavar|\oarg{description}\marg{name}\\ +% |\newkomavar*|\oarg{description}\marg{name} +% \item +% |\setkomavar|\marg{name}\oarg{description}\marg{content}\\ +% |\setkomavar*|\marg{name}\marg{description} +% \item +% |\usekomavar|\oarg{command}\marg{name}\\ +% |\usekomavar*|\oarg{command}\marg{name} +% \item +% |\ifkomavarempty|\marg{name}\marg{true-code}\marg{false-code}\\ +% |\ifkomavarempty*|\marg{name}\marg{true-code}\marg{false-code} +% \item +% |\ifkomavar|\marg{name}\marg{true-code}\marg{false-code} +% \item +% |\LoadLetterOption|\marg{name} +% |\LoadLetterOptions|\marg{names} +% \end{itemize} +% The following macros of the \textsf{komacv} class are provided by +% \ThisPackage. +% \begin{itemize} +% \item |\emaillink|\oarg{link-text}\marg{link} +% \item |\httplink|\oarg{link-text}\marg{link} +% \end{itemize} +% The following additional macros are defined by \ThisPackage. +% \begin{itemize} +% \item |\ifkomavarenabled|\marg{name}\marg{true-code}\marg{false-code}\\ +% This macro executes \meta{true-code} if the variable with name \meta{name} +% is enabled (through the KOMA option of the same name) and executes +% \meta{false-code} otherwise. +% \item |\httpslink|\oarg{link-text}\marg{link}\\ +% This macro is analogous to |\httplink|, just for HTTPS links. +% \end{itemize} +% +% +% \section{Limitations} +% +% The current version of \ThisPackage has the following known limitations. +% Some of them might be eliminated in future versions. +% +% \begin{itemize} +% \item Enabled variables that are not already defined by \textsf{scrlttr2} are +% \emph{not} displayed in the head of the letter. +% If you want the additional variables to be displayed, you currently have to +% set the |firsthead| variable manually (see the \textsf{scrlttr2} +% documentation). +% \item In a document based on the \textsf{komacv} class, KOMA options for +% enabling/disabling a variable must be set \emph{before} the content of the +% variable is set. Only then the respective \textsf{komacv} macro is set +% appropriately (i.e., set empty if the variable is disabled and set to the +% respective content when enabled). In short, as shown also in +% \cref{fig:lco-example}: First use |\KOMAoptions| and afterwards use +% |\setkomavar|. +% \end{itemize} +% +% \clearpage +% +% \StopEventually{} +%\iffalse +%<*package> +%\fi +% +% +% \section{Implementation} +% +% We use the \textsf{etoolbox} package for simplifying the code and use +% the \textsf{scrkbase} package for KOMA options and related macros. +% The \textsf{marvosym} and \textsf{fontawesome} packages provide the symbols +% for some of the variables defined by this package. +% \begin{macrocode} +\RequirePackage{etoolbox} +\RequirePackage{scrkbase} +\RequirePackage{marvosym,fontawesome} +% \end{macrocode} +% +% +% \subsection{KOMA Variables Interface} +% +% The ``public'' interface consists of the macros |\newkomavar|, |\setkomavar|, +% and |\usekomavar|, which we define to have the same arguments as the +% counterparts defined by \textsf{scrlttr2}. +% +% \begin{macro}{\newkomavar} +% The |\newkomavar|\oarg{description}\marg{name} macro defines a new KOMA +% variable with name \meta{name} and description \meta{description}. +% If \meta{description} is omitted, no description is set. +% The |\newkomavar*|\oarg{description}\marg{name} macro is defined equivalent to +% the un-starred macro. +% \begin{macrocode} +\providecommand{\newkomavar}{% + \@ifstar{\kcvlco@newkomavar}{\kcvlco@newkomavar}} +\newcommand{\kcvlco@newkomavar}[2][\relax]{% + \ifkomavar{#2}% + {\kcvlco@error{KOMA variable `#2' already defined}}% + {\csdef{kcvlco@@var@#2}{\empty}% + \begingroup\def\@tempa{#1}\def\@tempb{\relax}% + \ifx\@tempa\@tempb\endgroup\else + \endgroup\csdef{kcvlco@@desc@#2}{#1}\fi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setkomavar} +% The |\setkomavar|\marg{name}\oarg{description}\marg{content} macro sets the +% content of the variable with name \meta{name} to content \meta{content} and +% sets the description of the variable to \meta{description}. +% The |\setkomavar*|\marg{name}\marg{description} sets only the description of +% the variable with name \meta{name} and sets it to \meta{description}. +% \begin{macrocode} +\providecommand{\setkomavar}{% + \@ifstar{\kcvlco@setkomadesc}{\kcvlco@setkomavar}} +\newcommand{\kcvlco@setkomavar}[1]{\kcvlco@onlyifdef{#1}{\@ifnextchar[% + {\kcvlco@setkomavar@i{#1}}{\kcvlco@setkomavar@i{#1}[\relax]}}} +\long\def\kcvlco@setkomavar@i#1[#2]#3{% + \csdef{kcvlco@@value@#1}{#3}% + \csuse{scr@#1@postsetvar}% + \begingroup\def\@tempa{#2}\def\@tempb{\relax}% + \ifx\@tempa\@tempb\endgroup\else + \endgroup\csdef{kcvlco@@desc@#1}{#2}\fi} +\newcommand{\kcvlco@setkomadesc}[2]{% + \csdef{kcvlco@@desc@#1}{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\usekomavar} +% The |\usekomavar|\oarg{command}\marg{name} macro expands to the \meta{command} +% applied to the content of the KOMA variable \meta{name}. If omitted, +% \meta{command} is the identity. +% The |\usekomavar*|\oarg{command}\marg{name} macro is analogous to +% |\usekomavar| except that the description of the variable is used rather than +% the content. +% \begin{macrocode} +\providecommand{\usekomavar}{% + \@ifstar{\kcvlco@usekomadesc}{\kcvlco@usekomavar}} +\newcommand{\kcvlco@usekomavar}[2][\@firstofone]{% + \kcvlco@onlyifdef{#2}{#1{\csuse{kcvlco@@value@#2}}}} +\newcommand{\kcvlco@usekomadesc}[2][\@firstofone]{% + \kcvlco@onlyifdef{#2}{#1{\csuse{kcvlco@@desc@#2}}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifkomavarempty} +% The |\ifkomavarempty|\marg{name}\marg{true-code}\marg{false-code} expands to +% \meta{true-code} if the content of the KOMA variable \meta{name} is empty, and +% expands to \meta{false-code} otherwise. +% The |\ifkomavarempty*|\marg{name}\marg{true-code}\marg{false-code} is +% analogous to |\ifkomavarempty|, except that the description of the variable is +% checked for emptiness rather than the content. +% \begin{macrocode} +\providecommand{\ifkomavarempty}{% + \@ifstar{\kcvlco@ifemptydesc}{\kcvlco@ifemptyvar}} +\newcommand{\kcvlco@ifemptyvar}[1]{\ifcsvoid{kcvlco@@value@#1}} +\newcommand{\kcvlco@ifemptydesc}[1]{\ifcsvoid{kcvlco@@desc@#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifkomavar} +% The |\ifkomavar|\marg{name}\marg{true-code}\marg{false-code} macro checks +% whether the KOMA variable \meta{name} is defined and expands to +% \meta{true-code} (positive case) or \meta{false-code} (negative case) +% respectively. +% \begin{macrocode} +\providecommand{\ifkomavar}[1]{\ifcsdef{kcvlco@@var@#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifkomavarenabled} +% The |\ifkomavarenabled|\marg{name}\marg{true-code}\marg{false-code} macro +% checks whether the corresponding KOMA option for \meta{name} exists and is set +% to |false|. In this case, the macro expands to \meta{false-code} and otherwise +% expands to \meta{true-code}. +% \begin{macrocode} +\providecommand{\ifkomavarenabled}[1]{\csuse{kcvlco@@enab@#1}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Letter Options Interface} +% +% \begin{macro}{\LoadLetterOption} +% The |\LoadLetterOption|\marg{name} loads options from the file with filename +% \meta{name} (an ``lco''-file, but without the file extension). +% \begin{macro}{\LoadLetterOptions} +% The |\LoadLetterOptions|\marg{names} loads options from the files in the +% comma-separated list \meta{names} of file names (again without ``lco'' +% extension). +% \begin{macrocode} +\providecommand\LoadLetterOption[1]{\input{#1.lco}} +\providecommand\LoadLetterOptions[1]{\forcsvlist{\LoadLetterOption}{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \subsection{URL Formatting} +% +% \begin{macro}{\emaillink} +% The |\emaillink|\oarg{text}\marg{link} macro, analogously to \textsf{komacv}'s +% |\emaillink| macro, provides a means for typesetting a ``mailto'' link. +% \begin{macrocode} +\providecommand*{\emaillink}[2][]{% + \ifstrempty{#1}{% + \href{mailto:#2}{\usefontofkomafont{emaillinkfont}#2}}{% + \href{mailto:#2}{\usefontofkomafont{emaillinkfont}#1}}} +\IfExistskomafont{emaillinkfont}{}{\newkomafont{emaillinkfont}{}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\httplink} +% The |\httplink|\oarg{text}\marg{link} macro, analogously to \textsf{komacv}'s +% |\httplink| macro, provides a means for typesetting an HTTP link. +% \begin{macrocode} +\providecommand*{\httplink}[2][]{% + \ifstrempty{#1}{% + \href{http://#2}{\usefontofkomafont{httplinkfont}#2}}{% + \href{http://#2}{\usefontofkomafont{httplinkfont}#1}}} +\IfExistskomafont{httplinkfont}{}{\newkomafont{httplinkfont}{}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\httpslink} +% The |\httpslink|\oarg{text}\marg{link} macro, analogously to \textsf{komacv}'s +% |\httplink| macro, provides a means for typesetting an HTTPS link. +% \begin{macrocode} +\providecommand*{\httpslink}[2][]{% + \ifstrempty{#1}{% + \href{https://#2}{\usefontofkomafont{httplinkfont}#2}}{% + \href{https://#2}{\usefontofkomafont{httplinkfont}#1}}} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Registering KOMA Variables with \textsf{komacv} Macros} +% +% \begin{macro}{\kcvlco@newvar} +% The +% |\kcvlco@newvar|\oarg{description}\marg{KOMAvar}\marg{CVmacro}\marg{conditional} +% macro provides the KOMA variable \meta{KOMAvar}. If \meta{conditional} is +% provided, a Boolean |\KOMAoptions| variable named \meta{KOMAvar} is +% registered. +% This Boolean is stored in |if|\meta{conditional} (as registered with +% |\newif|). +% The macro connects \meta{KOMAvar} with the \textsf{komacv} macro +% \meta{CVmacro}. The connection establishes that when \meta{KOMAvar} is +% changed, the \meta{CVmacro} is updated (though \emph{not} vice versa). +% \begin{macrocode} +\newcommand\kcvlco@newvar[4][\relax]{% + \ifkomavar{#2}% + {\begingroup\def\@tempa{#1}\def\@tempb{\relax}% + \ifx\@tempa\@tempb\endgroup\else + \endgroup\setkomavar*{#2}{#1}\fi} + {\newkomavar[{#1}]{#2}}% + \ifstrempty{#4}% + {\csdef{kcvlco@@enab@#2}{\ifbool{true}}}% + {\csdef{kcvlco@@enab@#2}{\ifbool{#4}}\KOMA@ifkey{#2}{#4}}% +% \end{macrocode} +% We use the \meta{postsetvar} hook of KOMA, which we also implement in our +% |\setkomavar| surrogate. +% \begin{macrocode} + \@ifclassloaded{komacv}{% + \ifstrempty{#4}% + {\csappto{scr@#2@postsetvar}{\ifkomavarempty{#2}% + {\let#3=\empty}% + {\kcvlco@storekomavar{#2}{#3}}}}% + {\csappto{scr@#2@postsetvar}{\ifkomavarempty{#2}% + {\let#3=\empty}% + {\ifbool{#4}{\kcvlco@storekomavar{#2}{#3}}{\let#3=\empty}}}}% + \csuse{scr@#2@postsetvar}}{}} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Internal Helper Macros} +% +% \begin{macro}{\kcvlco@error} +% The |\kcvlco@error|\marg{message} macro displays the given error +% \meta{message}. +% \begin{macrocode} +\providecommand{\kcvlco@error}[1]{% + \PackageError{komacv-lco}{#1}{}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\kcvlco@errundef} +% The |\kcvlco@errundef|\marg{name} macro displays an error message for +% KOMA variable \meta{name} not being defined. +% \meta{message}. +% \begin{macrocode} +\providecommand{\kcvlco@errundef}[1]{% + \kcvlco@error{KOMA variable `#1' undefined}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\kcvlco@onlyifdef} +% The |\kcvlco@onlyifdef|\marg{name}\marg{code} macro displays an error message +% if KOMA variable \meta{name} is undefined and expands to \meta{code} +% otherwise. +% \meta{message}. +% \begin{macrocode} +\providecommand{\kcvlco@onlyifdef}[2]{% + \ifkomavar{#1}{#2}{\kcvlco@errundef{#1}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\kcvlco@storekomavar} +% The |\kcvlco@storekomavar|\marg{name}\marg{macro} macro stores the content of +% the KOMA variable \meta{name} into the macro \meta{macro}. +% \begin{macrocode} +\newcommand{\kcvlco@storekomavar}[2]{\letcs#2{kcvlco@@value@#1}} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Declaration of Concrete Variables} +% +% \paragraph{Shared variables} +% The following variables are shared by \textsf{scrlttr2} and \textsf{komacv}. +% The conditionals used in the last argument to |\kcvlco@newvar| are taken over +% from \textsf{scrlttr2}. +% \begin{macrocode} +\kcvlco@newvar[\Telefon]{fromphone}{\phonenr}{@phone} +\kcvlco@newvar[\Mobilefone]{frommobilephone}{\mobile}{@mobilephone} +\kcvlco@newvar[\FAX]{fromfax}{\faxnr}{@fax} +\kcvlco@newvar[\Letter]{fromemail}{\email}{@email} +\kcvlco@newvar{fromurl}{\homepage}{@www} +% \end{macrocode} +% +% \paragraph{\textsf{scrlttr2} variables} +% The following variables are \textsf{scrlttr2}-only. +% \begin{macrocode} +\ifkomavar{fromname}{}{\newkomavar{fromname}} +\setkomavar{fromname}{% + \usekomavar{fromfirstname}~\usekomavar{fromfamilyname}} +\ifkomavar{fromaddress}{}{\newkomavar{fromaddress}} +\setkomavar{fromaddress}{% + \usekomavar{fromaddressstreet}\\ \usekomavar{fromaddresscity}} +\ifkomavar{place}{}{\newkomavar{place}} +\ifkomavar{location}{}{\newkomavar{location}} +% \end{macrocode} +% +% \paragraph{\textsf{komacv} variables} +% The following variables are \textsf{komacv}-only. +% \begin{macrocode} +\kcvlco@newvar{fromfirstname}{\firstname}{} +\kcvlco@newvar{fromfamilyname}{\familyname}{} +\kcvlco@newvar{fromacadtitle}{\acadtitle}{} +\kcvlco@newvar{fromaddressstreet}{\addressstreet}{} +\kcvlco@newvar{fromaddresscity}{\addresscity}{} +\kcvlco@newvar[\faTwitter]{fromtwitter}{\twitter}{kcvlco@@twitter} +\kcvlco@newvar[\faGithub]{fromgithub}{\github}{kcvlco@@github} +\kcvlco@newvar[\faFacebook]{fromfacebook}{\facebook}{kcvlco@@facebook} +\kcvlco@newvar[\faLinkedin]{fromlinkedin}{\linkedin}{kcvlco@@linkedin} +\kcvlco@newvar{fromextrainfo}{\extrainfo}{kcvlco@@extrainfo} +% \end{macrocode} +% +%\iffalse +%</package> +%\fi +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/komacv-rg/komacv-multilang.dtx b/Master/texmf-dist/source/latex/komacv-rg/komacv-multilang.dtx new file mode 100644 index 00000000000..ef4416da154 --- /dev/null +++ b/Master/texmf-dist/source/latex/komacv-rg/komacv-multilang.dtx @@ -0,0 +1,878 @@ +% \iffalse meta-comment +% +% Copyright (C) 2016-2017 by Richard Gay <richard.gay@t-online.de> +% ------------------------------------------------------- +% +% This file may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.2 +% of this license or (at your option) any later version. +% The latest version of this license is in: +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.2 or later is part of all distributions of LaTeX +% version 1999/12/01 or later. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{komacv-multilang.dtx} +%</driver> +%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%<package>\ProvidesPackage{komacv-multilang} +%<*package> + [2017/08/30 v0.9 Package for multi-lingual extension to komacv] +%</package> +% +%<*driver> +\RequirePackage{scrlfile} +\ReplaceClass{article}{scrartcl} +\BeforePackage{doc}{\let\oldmaketitle\maketitle} +\PassOptionsToClass{emulatestandardclasses,DIV=11}{scrartcl} +\documentclass{ltxdoc} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[columns=2]{idxlayout} +\usepackage{xspace} +\usepackage{enumitem} +\newlist{ExampleAspects}{enumerate*}{1}\setlist[ExampleAspects]{label=(\arabic*)} +\usepackage{showexpl} +\lstset{gobble=2,frame=trbl,backgroundcolor=\color{black!5!white},width=0.55\textwidth} +\lstset{basicstyle=\footnotesize\fontfamily{pcr}\selectfont} +\lstset{explpreset={columns=fixed,numbers=none,language={}}} +\lstset{preset={\small\sffamily},overhang=3cm,pos=r,varwidth=false} +\setkomafont{captionlabel}{\usekomafont{descriptionlabel}} +\usepackage{pbox} +\usepackage{csquotes}\MakeOuterQuote{"} +\renewcommand*\figureformat{\textbf{\figurename~\thefigure}\autodot} +\newcommand\NiceDescribeStuff[2]{% #1=margin text, #2=body text + \medskip\par\noindent\leavevmode% + \marginpar{\hfill\hbox to 0pt{\hss\pbox[t]{4\marginparwidth}{\ttfamily #1}}% + \hspace*{-0.85\marginparsep}}% NOTE: the 0.85 fixes an otherwise too close placement + \ifstrempty{#2}{\ignorespaces}{#2\smallskip\\}} +\newcommand\NiceDescribeEnv[3][]{% #1=index list, #2=envname, #3=parameters + \NiceDescribeStuff{% + \textcolor{gray}{\cs{begin}}\string{#2\string}\\ + \textcolor{gray}{\cs{end}}\string{#2\string}}{#3}% + \ifstrempty{#1} + {\SpecialEnvIndex{#1}}% + {\forcsvlist{\SpecialEnvIndex}{#1}}% + \ignorespaces} +\newcommand\NiceDescribeMacro[2]{% #1=macro, #2=parameters + \NiceDescribeStuff{\hbox to 0pt{\hss\string#1}}{#2}% + \SpecialUsageIndex{#1}\ignorespaces} +\newcommand\NiceDescribeConstant[1]{% #1=constant + \NiceDescribeStuff{#1\quad\kern 0pt\relax}{}} +\newcommand\ThisPackage{\textsf{komacv-multilang}\xspace} +\newcommand\BasePackage{\textsf{komacv}\xspace} +\usepackage{hypdoc} +\usepackage[capitalise,noabbrev,nameinlink]{cleveref} +% The following packages are for the examples. +% Note that for the documentation purpose we fake loading the \textsf{komacv} +% class as a package. We disable loading of class files and rather load +% \textsf{scrartcl} as the class of this document (see the hack above). We save +% sectioning commands as \textsf{komacv} redefines them. +\usepackage{letltxmacro,etoolbox} +% backup stuff before loading komacv +\LetLtxMacro{\NormalSection}{\section} +\LetLtxMacro{\NormalSubSection}{\subsection} +\LetLtxMacro{\NormalSubSubSection}{\subsubsection} +\newcommand\GetKomaFont[2]{\letcs#1{scr@fnt@#2}\expandafter\let\expandafter#1#1} +\newcommand\LetKomaFont[2]{\setkomafont{#1}{#2}} +\GetKomaFont\NormalSectionFont{section} +\GetKomaFont\NormalSubSectionFont{subsection} +\makeatletter +% disable stuff +\renewcommand\LoadClass[2][]{} +\let\oldhypersetup=\hypersetup\def\hypersetup#1{}% +% load komacv +\@fileswithoptions\@clsextension[style=casual]{komacv} +% restore stuff +\parindent=1em\relax% seems to be the default +\let\hypersetup\oldhypersetup +\let\maketitle\oldmaketitle +\LetLtxMacro{\CVSection}{\section}\GetKomaFont\CVSectionFont{section}\LetKomaFont{section}{\NormalSectionFont} +\LetLtxMacro{\CVSubSection}{\subsection}\GetKomaFont\CVSubSectionFont{subsection}\LetKomaFont{subsection}{\NormalSubSectionFont} +\LetLtxMacro{\CVSubSubSection}{\subsubsection} +\lstset{preset={% + \LetLtxMacro{\section}{\CVSection}\LetKomaFont{section}{\CVSectionFont}% + \LetLtxMacro{\subsection}{\CVSubSection}\LetKomaFont{subsection}{\CVSubSectionFont}% + \LetLtxMacro{\subsubsection}{\CVSubSubSection}% + % fix the width of columns in each listing based on \linewidth + \setlength{\@hintscolwidth}{0.3\linewidth}% + \setlength{\@maincolwidth}{\linewidth-\@sepcolwidth-\@hintscolwidth}% + \setlength{\@dbitemmaincolwidth}{% + \@maincolwidth-\@hintscolwidth-2\@sepcolwidth}% + \setlength{\@dbitemmaincolwidth}{0.33\@dbitemmaincolwidth}% + % NOTE: \@sepcolwidth is actually missing in komacv... + \setlength{\@listdbitemmaincolwidth}{\@maincolwidth-\@sepcolwidth-\@listitemsymbolwidth}% + \setlength{\@listdbitemmaincolwidth}{0.475\@listdbitemmaincolwidth}% +}} +\LetLtxMacro{\section}{\NormalSection} +\LetLtxMacro{\subsection}{\NormalSubSection} +\LetLtxMacro{\subsubsection}{\NormalSubSubSection} +\makeatother +\usepackage[german,english]{babel} +\usepackage[languages={english,german}]{komacv-multilang} +% end of examples packages +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{komacv-multilang.dtx} + \PrintChanges + \PrintIndex +\end{document} +%</driver> +% \fi +% +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \changes{v0.1}{2016/09/03}{Initial version (unpublished)} +% \changes{v0.9}{2017/08/30}{Complete rewrite, splits off \textsf{multilang} package} +% +% \GetFileInfo{komacv-multilang.dtx} +% +% \DoNotIndex{\newcommand,\newenvironment,\def,\gdef,\edef} +% +% +% \title{The \ThisPackage Package\thanks{This document +% corresponds to \ThisPackage~\fileversion, dated \filedate. +% The package is available online at +% \url{http://www.ctan.org/pkg/komacv-rg} and +% \url{https://github.com/Ri-Ga/komacv-rg}.}} +% \author{Richard Gay \\ \texttt{richard.gay@t-online.de}} +% +% \maketitle +% +% \section{Introduction} +% \label{sec:Introduction} +% +% The goal of \ThisPackage is to simplify the specification and maintenance of a +% CV in multiple languages. More concretely, \ThisPackage enables one +% \begin{itemize}[noitemsep] +% \item to specify translations for pieces of content such that they are located +% closely together and easily identifiable as belonging together; and +% \item to change the document's language as simple as changing the +% \textsf{babel} or \textsf{polyglossia} language. +% \end{itemize} +% That is, with \ThisPackage, you can continuously expand and improve your CV in +% more than one language and when you actually want to use the CV, you choose a +% language and restrict the content to what you want to show. +% +% The \ThisPackage package is realized as proxy to the \BasePackage class. The +% latter package enables one to typeset CVs in one of three styles provided by +% the package or in a custom-made style. \ThisPackage uses the +% \textsf{multilang} package to define a set of macros and environments that +% establish a multilingual interface to +% \BasePackage's macros and +% \LaTeX's sectioning and list macros and environments. +% The macros and environments of \ThisPackage provide a proxy to all macros of +% \BasePackage that produce CV entries. +% That is, with \ThisPackage, it should not be necessary to use \BasePackage +% directly for CV entries, even though it is still possible to use \BasePackage +% macros. +% +% The remainder of this introduction provides an example based on \BasePackage's +% "casual" style. +% The \ThisPackage package is not limited to a specific style but bases on the +% macro interface provided by the core \BasePackage class (i.e., macros like +% |\cvitem| and |\cventry|). +% The example shows a toy excerpt of a multilingual CV with \ThisPackage +% (\cref{fig:Example-multilang}). For comparison, the same CV is also produced +% with pure \BasePackage (\cref{fig:Example-komacv}) and an ad-hoc approach to +% specifying the translations. +% +% The example shows the document preamble, sectioning, a simple as +% well as a more involved CV entry, date range specification, and list entries. +% The example can be used for getting an intuition about \ThisPackage as well as +% for deciding whether to use \ThisPackage (or rather an ad-hoc approach as in +% \cref{fig:Example-komacv}). +% +% \begin{figure}[p] +% \begin{LTXexample}[pos=t,width=\textwidth,overhang=0cm] +% % in preamble +% \documentclass[style=casual]{komacv} +% \usepackage[english]{babel} +% \usepackage[languages={english,german}]{komacv-multilang} +% % in document +% \begin{Section}{ +% title/english = Education, +% title/german = Schulische Ausbildung} +% \BasicEntry{ +% header/english = {date of birth}, +% header/german = {Geburtsdatum}, +% text/date = {1970-01-01}, +% } +% \EducationEntry{ +% when/daterange = {2010-08-01}{2015-07-31}, +% degree/english = M.Sc.{} Computer Science, +% degree/german = Master Informatik, +% institution = UCSB, +% where/english = {California, USA}, +% where/german = {Kalifornien, USA}, +% grade/english = 4.00 GPA, +% grade/german = {Gesamtnote 1,0}, +% details/list = { +% \Item{ +% value/english = {cryptography}, +% value/german = {Kryptographie}, +% } +% \Item{ +% value/english = {software engineering}, +% value/german = {Software-Engineering}, +% } +% }, +% } +% \end{Section} +% \end{LTXexample} +% \caption{Multilingual CV with \ThisPackage} +% \label{fig:Example-multilang} +% \end{figure} +% +% \begin{figure}[p] +% \begin{LTXexample}[pos=t,width=\textwidth,overhang=0cm] +% % in preamble +% \documentclass[style=casual]{komacv} +% \usepackage[english]{babel} +% \newcommand\inEnglish[1]{#1} +% \newcommand\inGerman[1]{} +% % in document +% \section{\inEnglish {Education}% +% \inGerman {Schulische Ausbildung}} +% \cvitem{\inEnglish {date of birth}% +% \inGerman {Geburtsdatum}} +% {\inEnglish {January 1, 1970}% +% \inGerman {1.{} Januar 1970}} +% \cventry {08/2010 -- 07/2015} +% {\inEnglish {M.Sc.{} Computer Science}% +% \inGerman {Master Informatik}} +% {UCSB} +% {\inEnglish {California, USA}% +% \inGerman {Kalifornien, USA}} +% {\inEnglish {4.00 GPA}% +% \inGerman {Gesamtnote 1,0}}% +% {\begin{compactitem} +% \item\inEnglish {cryptography}% +% \inGerman {Kryptographie} +% \item\inEnglish {software engineering}% +% \inGerman {Software-Engineering} +% \end{compactitem}} +% \end{LTXexample} +% \caption{Multilingual CV with \BasePackage}\medskip +% \label{fig:Example-komacv} +% \end{figure} +% \clearpage +% +% +% \section{Usage} +% \label{sec:Usage} +% +% +% \subsection{Package Loading} +% +% The \ThisPackage package is loaded like any other package. +% The only requirements to pay attention to are, +% firstly, \ThisPackage must be loaded after \textsf{babel} or +% \textsf{polyglossia}, and +% secondly, \ThisPackage must be loaded after the \BasePackage class. +% This ensures that \ThisPackage can detect the document's language and that it +% can apply fixes to \BasePackage. +% +% \NiceDescribeConstant{languages} +% The \ThisPackage package has one package option: |languages|. +% Through this option, the set of languages known to \ThisPackage is specified, +% as a comma-separated list. +% \cref{sec:Usage-Sections} includes an example of loading \ThisPackage. +% +% +% \subsection{Sections} +% \label{sec:Usage-Sections} +% +% The \ThisPackage package utilizes \textsf{multilang-sect} for sectioning +% environments. Under the \BasePackage class, these environments produce +% sections in the respective loaded \BasePackage style. +% The following documentation essentially repeats what is also stated in the +% \textsf{multilang} documentation. +% +% \NiceDescribeEnv{Section}{\marg{data}} +% This environment shows a section. +% It has a single, mandatory argument, named |title|. +% It is a disablable environment, i.e., the argument |disabled| can be used in +% \meta{data} to disable the display of the whole section. +% This environment acts as a proxy for the |\section| macro as it is used by +% \BasePackage (i.e., without optional argument and without the star). + +% \NiceDescribeEnv{SubSection}{\marg{data}} +% This environment is analogous to the |Section| environment, just for +% sub-sections. +% Examples: +% +% \begin{LTXexample}[morekeywords={Section,SubSection}] +% % in preamble +% \documentclass[style=casual]{komacv} +% \usepackage[english]{babel} +% \usepackage[languages={english,german}] +% {komacv-multilang} +% % in document +% \begin{Section}{ +% title/english = Work Experience, +% title/german = Berufserfahrungen, +% } +% (section content) +% \begin{SubSection}{ +% title/english = Teaching, +% title/german = Lehre, +% } +% (subsection content) +% \end{SubSection} +% \end{Section} +% \end{LTXexample} +% The example shows several aspects: +% \begin{ExampleAspects} +% \item how the \ThisPackage package is loaded and how its |languages| option +% is used +% and +% \item how the |Section| and |SubSection| environments can be used. +% \end{ExampleAspects} +% +% +% \subsection{CV Entries} +% \label{sec:Usage-Entries} +% +% The \BasePackage provides a set of macros for typesetting CV entries. In the +% following, we introduce the proxies for these macros provided by \ThisPackage. +% +% +% \NiceDescribeMacro{\BasicEntry}{\marg{data}} +% This macro has two mandatory arguments, named |header| and |text|, and one +% optional argument, named |spacing|. +% The argument alias |both| can be used to specify the |header| and |text| +% simultaneously. +% It is a disablable macro, i.e., the argument |disabled| can be used in +% \meta{data} to disable the display of the entry. +% This macro acts as a proxy for \BasePackage's |\cvitem| macro. +% That is, the value of the |header| argument is displayed in the hint column +% and the |text| is displayed in the main column. +% The value of the |spacing| argument specifies the vertical spacing below the +% CV entry. Examples: +% +% \begin{LTXexample}[morekeywords={BasicEntry}] +% \BasicEntry{ +% header/english = date of birth, +% header/german = Geburtsdatum, +% text/date = 1970-01-01, +% } +% \BasicEntry{disabled, +% both/english = {marital status}{single}, +% both/german = {Familienstand}{ledig}, +% } +% \end{LTXexample} +% The example shows several aspects: +% \begin{ExampleAspects} +% \item how translated values for the arguments |header| and |text| are +% specified, +% \item how a date can be specified (in the |yyyy-mm-dd| format) for a localized +% display, +% \item how the display of an entry can be disabled, +% \item how the |both| argument can be used, +% and +% \item how the \LaTeX{} source code can be aligned such that it is easily +% readable despite the presence of translations. +% \end{ExampleAspects} +% +% +% \NiceDescribeMacro{\CommentedEntry}{\marg{data}} +% This macro has three mandatory arguments, named |header|, |text|, and +% |comment|, as well as one optional argument named |spacing|. +% The argument alias |all| can be used to specify |header|, |text|, and +% |comment| simultaneously. +% It is a disablable macro, i.e., the argument |disabled| can be used in +% \meta{data} to disable the display of the entry. +% This macro acts as a proxy for \BasePackage's |\cvitemwithcomment| macro. +% That is, the value of the |header| argument is displayed in the hint column, +% the |text| is displayed in the main column and the |comment| is displayed +% right-aligned in the main column. +% The value of the |spacing| argument specifies the vertical spacing below the +% CV entry. Examples: +% +% \begin{LTXexample}[morekeywords={CommentedEntry}] +% \CommentedEntry{ +% all/english = {English}{fluent} +% {(oral and written)}, +% all/german = {Englisch}{flie{\ss}end} +% {(in Wort und Schrift)} +% } +% \CommentedEntry{ +% header/english = German, +% header/german = Deutsch, +% text/english = mother tongue, +% text/german = Muttersprache, +% comment = {}, +% } +% \end{LTXexample} +% The example shows several aspects: +% \begin{ExampleAspects} +% \item how the |all| argument alias can be used, +% \item how arguments can be broken into multiple lines, +% \item how translated values for the arguments |header|, |text|, and |comment| +% are specified, +% and +% \item how an argument can be left empty in all languages (|comment|). +% \end{ExampleAspects} +% +% +% \NiceDescribeMacro{\DoubleEntry}{\marg{data}} +% This macro has four mandatory arguments, named +% |header1|, |text1|, |header2|, and |text2|, +% as well as one optional argument named |spacing|. +% The argument aliases |first| and |second| can be used to specify |header1|, +% and |text1|, respectively, |header2| and |text2| simultaneously. +% It is a disablable macro, i.e., the argument |disabled| can be used in +% \meta{data} to disable the display of the entry. +% This macro acts as a proxy for \BasePackage's |\cvdoubleitem| macro. +% That is, the value of the |header1| argument is displayed in the hint column, +% and the values of |text1|, |header2|, and |text2| are displayed in a columned +% fashion in the main column. +% The value of the |spacing| argument specifies the vertical spacing below the +% CV entry. Example: +% +% \begin{LTXexample}[morekeywords={DoubleEntry}] +% \DoubleEntry{ +% first = {h1}{t1}, +% second = {h2}{t2}, +% } +% \end{LTXexample} +% The example shows +% how the |first| and |second| argument aliases can be used. +% Further possibilities for specifying the arguments, including translations, +% are analogous to the cases of |\BasicEntry| and |\DoubleEntry|. +% +% +% \NiceDescribeMacro{\EducationEntry}{\marg{data}} +% This macro has five mandatory arguments, named +% |when|, |degree|, |institution|, |where|, and |grade|, +% as well as two optional arguments, named |spacing| and |details|. +% It is a disablable macro, i.e., the argument |disabled| can be used in +% \meta{data} to disable the display of the entry. +% This macro acts as a proxy for \BasePackage's |\cventry| macro. +% That is, the value of the |where| argument is displayed in the hint column, +% whereas the values for the other arguments are displayed in the main column +% (in the order they are listed). +% The value of the |spacing| argument specifies the vertical spacing below the +% CV entry. Example: +% +% \begin{LTXexample}[morekeywords={EducationEntry}] +% \EducationEntry{ +% when/daterange = {2010-08-01}{2015-07-31}, +% degree/english = M.Sc.{} Computer Science, +% degree/german = Master Informatik, +% institution = UCSB, +% where/english = {California, USA}, +% where/german = {Kalifornien, USA}, +% grade/english = 4.00 GPA, +% grade/german = {Gesamtnote 1,0}, +% details = {(e.g., honors, awards)}, +% } +% \end{LTXexample} +% The example shows a few notable aspects: +% \begin{ExampleAspects} +% \item how the arguments can be used, +% \item how a date range can be specified (for the |when| argument), +% and +% \item how curly braces can be used to deal with commas in argument values +% (for the |where|, |grade|, and |details| arguments). +% \end{ExampleAspects} +% +% +% \NiceDescribeMacro{\EmploymentEntry}{\marg{data}} +% This macro has four mandatory arguments, named +% |when|, |title|, |employer|, and |where|, +% as well as two optional arguments, named |spacing| and |description|. +% It is a disablable macro, i.e., the argument |disabled| can be used in +% \meta{data} to disable the display of the entry. +% This macro acts as a proxy for \BasePackage's |\cventry| macro, as also +% |\EducationEntry|. +% The |\EmploymentEntry| specializes to detailed entries about professional/work +% experiences. +% Example: +% +% \begin{LTXexample}[morekeywords={EmploymentEntry}] +% \EmploymentEntry{ +% when/daterange = {2015-08-01}{*}, +% title/english = Software engineer, +% title/german = Softwareentwickler, +% employer = XYZ Development, +% where/english = {California, USA}, +% where/german = {Kalifornien, USA}, +% description = {Java, JavaScript}, +% } +% \end{LTXexample} +% +% \NiceDescribeMacro{\AchievementEntry}{\marg{data}} +% This macro has two mandatory arguments, named +% |when| and |title|, +% as well as four optional arguments, named |spacing|, |occasion|, |where|, and |description|. +% It is a disablable macro, i.e., the argument |disabled| can be used in +% \meta{data} to disable the display of the entry. +% This macro acts as a proxy for \BasePackage's |\cventry| macro, as also +% |\EducationEntry| and |\EmploymentEntry|. +% The |\AchievementEntry| specializes to entries about achievements. +% Example: +% +% \begin{LTXexample}[morekeywords={AchievementEntry}] +% \AchievementEntry{ +% when/date = 2016-05-01, +% title/english = employee of the month, +% title/german = Mitarbeiter des Monats, +% where = XYZ Development, +% } +% \end{LTXexample} +% +% +% \NiceDescribeMacro{\EntryListItem}{\marg{data}} +% This macro has one mandatory argument, |item|, and one optional argument, +% |label|. +% It is a disablable macro, i.e., the argument |disabled| can be used in +% \meta{data} to disable the display of the entry. +% This macro acts as a proxy for \BasePackage's |\cvlistitem| macro. +% +% \NiceDescribeMacro{\EntryListDblItem}{\marg{data}} +% This macro has two mandatory arguments, |first| and |second|, and one optional +% argument, |spacing|.\footnote{Note that contrary to the \BasePackage +% documentation, the optional argument to \cs{cvlistitem} and +% \cs{cvlistdoubleitem} is also the spacing and not a label.} +% The argument alias |both| can be used to specify |first| and |second| +% simultaneously. +% It is a disablable macro, i.e., the argument |disabled| can be used in +% \meta{data} to disable the display of the entry. +% This macro acts as a proxy for \BasePackage's |\cvlistdoubleitem| macro. +% Examples: +% +% \begin{LTXexample}[morekeywords={EntryListDblItem,EntryListItem}] +% \BasicEntry{ +% header/english = programming, +% header/german = Programmiersprachen, +% text/english = {I am proficient in:}, +% text/german = {Ich beherrsche:}} +% \EntryListDblItem{both = {Java}{C/C++}} +% \EntryListItem {item = PHP} +% \end{LTXexample} +% +% +% \subsection{Dates and Lists} +% +% The \ThisPackage package defines several datatypes, such as |date| and +% |daterange|, which are illustrated multiple times in \cref{sec:Usage-Entries}. +% The following is a complete list of all defined datatypes. +% +% \begin{description} +% \item[|date|:] +% This datatype expects a date in the format |yyyy-mm-dd| and displays it in +% the regional format for dates. +% +% \item[|daterange|:] +% This datatype expects two dates in the format |yyyy-mm-dd| and displays them +% in the same format as |shortdate|, with a ``--'' in between. +% If the second date is ``|*|'', the text ``today'' (in the selected +% language) is displayed. +% +% \item[|shortdate|:] +% This datatype expects a date in the format |yyyy-mm-dd| and displays it in +% the format ``mm/yyyy''. +% +% \item[|list|:] +% This datatype expects a list of items and displays the items in a compact +% form. Items can be specified with the standard |\item| macro as well as with +% the multilingual |\Item|\marg{data} macro, whose \meta{data} parameter +% expected one mandatory argument, |value|. +% The following example shows both possibilities.\smallskip +% +% \begin{LTXexample}[morekeywords={list,Item}] +% \BasicEntry{ +% header/english = programming languages, +% header/german = Programmiersprachen, +% text/list = { +% \item PHP +% \Item{value = Java} +% \Item{ +% value/english = C and C++, +% value/german = C und C++}}} +% \end{LTXexample} +% +% \end{description} +% +% +% \subsection{Tags} +% +% The \ThisPackage package utilizes \textsf{multilang-tags} for tag support. +% Tag support enables one to easily switch between granularities and focuses of +% a CV. +% The following just provides an example from the context of typesetting CVs. +% For more information, please consult the \textsf{multilang} documentation. +% +% \begin{LTXexample}[morekeywords={tags,DefineTagFilter,UseTagFilter}] +% \DefineTagFilter{Programmer}{accept}{ +% accept=PLDetails, deny=OfficeDetails} +% \DefineTagFilter{Consultant}{accept}{ +% accept=OfficeDetails, deny=PLDetails} +% \UseTagFilter{Consultant} +% \begin{Section}{ +% title/english = Skills, +% title/german = Qualifikationen} +% \BasicEntry{ +% header/english = Programming, +% header/german = Programmiersprachen, +% text/list = { +% \Item{value = {Java, C/C++}} +% \Item{tags = PLDetails, +% value = {\LaTeX, Bash}}}} +% \BasicEntry{header = Software, +% text/list = { +% \Item{value = MS Office} +% \Item{tags = OfficeDetails, +% value = Adobe InDesign}}} +% \end{Section} +% \end{LTXexample} +% +% \clearpage +% +% \StopEventually{} +%\iffalse +%<*package> +%\fi +% +% +% \section{Implementation} +% +% The \textsf{multilang} package provides the core feature of \ThisPackage: +% defining multilingual macros and environments. We load the package with the +% same options as \ThisPackage. That is, the |languages| option of \ThisPackage +% is passed on to \textsf{multilang}. +% We also utilize the \textsf{multilang} extensions for tags and sectioning macros. +% \begin{macrocode} +\RequirePackageWithOptions{multilang} +\RequirePackage{multilang-tags} +\RequirePackage{multilang-sect} +% \end{macrocode} +% For the date datatypes (\cref{sec:Implementation-DateFormatting}), we use the +% following packages: +% \begin{macrocode} +\PassOptionsToPackage{useregional}{datetime2} +\RequirePackage{datetime2,datetime2-calc} +\RequirePackage{translations} +% \end{macrocode} +% +% +% \subsection{Datatypes} +% +% We define the datatypes before we define the multilingual macros and +% environments, such that the datatypes are available in the macros and +% environments. +% +% \subsubsection{Date Formatting} +% \label{sec:Implementation-DateFormatting} +% +% First, we define the three datatypes. The code largely speaks for itself. +% \begin{macrocode} +\NewMultilangType{date}{\DTMdate{#1}} +\NewMultilangType{shortdate}{% + \DTMsetdatestyle{Myyyy}\DTMdate{#1}\DTMsetdatestyle{default}} +\NewMultilangType[2]{daterange}{% + \DTMsetdatestyle{Myyyy}\DTMdate{#1} -- +% \end{macrocode} +% If the second argument to |daterange| equals ``|*|'', then the text ``today'' +% (in the translation for the current language) is displayed rather than a date. +% \begin{macrocode} + \ifstrequal{#2}{*}% + {\GetTranslation{today}}% + {\DTMdate{#2}}\DTMsetdatestyle{default}} +% \end{macrocode} +% Next, we define the |Myyyy| date format, which we use for the |shortdate| and +% |daterange| style. +% \begin{macrocode} +\DTMnewdatestyle{Myyyy}{% + \def\DTMdisplaydate##1##2##3##4{\DTMtwodigits{##2}/##1}} +% \end{macrocode} +% Finally, we provide a small set of initial translations for the ``today'' in +% |daterange|. +% \begin{macrocode} +\DeclareTranslation{english}{today}{today} +\DeclareTranslation{german}{today}{heute} +\DeclareTranslation{french}{today}{aujourd'hui} +% \end{macrocode} +% +% +% \subsubsection{List Formatting} +% +% First, we define the list type, |list|. +% \begin{macrocode} +\NewMultilangType{list}{\kcvml@list{#1}} +% \end{macrocode} +% +% \begin{macro}{\kcvml@list} +% For the |list| datatype, the |\kcvml@list|\marg{items} macro formats an +% itemized list of multiple items. The items of the list are specified by +% \meta{items}. The items can be specified with |\item| macros as well as with +% multilingual |\Item| macros (i.e., |\kcvml@listitem|). +% \begin{macrocode} +\newcommand\kcvml@list[1]{% +% \end{macrocode} +% To ensure a proper spacing, we use \textsf{komacv}'s |compactitem| environment +% and encapsulate this environment inside a |minipage|. +% Only inside this environment, we enable the |\Item| macro. +% \begin{macrocode} + \begin{minipage}[t]{\linewidth}% + \let\Item=\kcvml@listitem + \compactitem + #1% +% \end{macrocode} +% For the case that the last line of the last list item has a small depth, the +% |minipage| might yield a bad spacing to content following the list. +% Hence, we add a |\strut| here. +% \begin{macrocode} + \ifhmode\unskip\strut\fi + \endcompactitem + \end{minipage}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\kcvml@listitem} +% The |\kcvml@listitem|\marg{data} enables multilingual items as a proxy to +% the |\item| macro. We treat |\item| here as a macro with one argument, as it +% usually does not harm to write ``|\item{text}|'' rather than ``|\item text|''. +% \begin{macrocode} +\NewMultilangCmd{\kcvml@listitem}{disablable, + command=\item, margs=value} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{CV Entries} +% +% \begin{macro}{\BasicEntry} +% The |\BasicEntry|\marg{data} is a proxy to the |\cvitem| macro of +% \BasePackage. +% \begin{macrocode} +\NewMultilangCmd{\BasicEntry}{disablable, + command=\cvitem, + oargs={spacing}, + margs={header,text}, + alias/both={header,text}, +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\CommentedEntry} +% The |\CommentedEntry|\marg{data} is a proxy to the |\cvitemwithcomment| macro +% of \BasePackage. +% \begin{macrocode} +\NewMultilangCmd{\CommentedEntry}{disablable, + command=\cvitemwithcomment, + oargs={spacing}, + margs={header,text,comment}, + alias/all={header,text,comment}, +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\DoubleEntry} +% The |\DoubleEntry|\marg{data} is a proxy to the |\cvdoubleitem| macro of +% \BasePackage. +% \begin{macrocode} +\NewMultilangCmd{\DoubleEntry}{disablable, + command=\cvdoubleitem, + oargs={spacing}, + margs={header1,text1,header2,text2}, + alias/first={header1,text1}, + alias/second={header2,text2}, +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EducationEntry} +% The |\EducationEntry|\marg{data} is a proxy to the |\cventry| macro of +% \BasePackage, specialized for education-related entries. +% \begin{macrocode} +\NewMultilangCmd{\EducationEntry}{disablable, + command=\cventry, + oargs={spacing}, + margs={when,degree,institution,where,grade,details}, + defaults={details={}}, +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EmploymentEntry} +% The |\EmploymentEntry|\marg{data} is a proxy to the |\cventry| macro of +% \BasePackage, specialized for main work-related entries. +% \begin{macrocode} +\NewMultilangCmd{\EmploymentEntry}{disablable, + command=\cventry, + oargs={spacing}, + margs={when,title,employer,where,@grade,description}, + defaults={@grade={}, description={}}, +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AchievementEntry} +% The |\AchievementEntry|\marg{data} is a proxy to the |\cventry| macro of +% \BasePackage, specialized for achievements. +% \begin{macrocode} +\NewMultilangCmd{\AchievementEntry}{disablable, + command=\cventry, + oargs={spacing}, + margs={when,title,occasion,where,@grade,description}, + defaults={@grade={}, occasion={}, where={}, description={}}, +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EntryListItem} +% The |\EntryListItem|\marg{data} is a proxy to the |\cvlistitem| macro of +% \BasePackage. +% \begin{macrocode} +\NewMultilangCmd{\EntryListItem}{disablable, + command=\cvlistitem, + oargs={spacing}, + margs={item}, +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EntryListDblItem} +% The |\EntryListDblItem|\marg{data} is a proxy to the |\cvlistdoubleitem| +% macro of \BasePackage. +% \begin{macrocode} +\NewMultilangCmd{\EntryListDblItem}{disablable, + command=\cvlistdoubleitem, + oargs={spacing}, + margs={first,second}, + alias/both={first,second}, +} +% \end{macrocode} +% \end{macro} +% +%\iffalse +%</package> +%\fi +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/komacv-rg/komacv-rg.ins b/Master/texmf-dist/source/latex/komacv-rg/komacv-rg.ins new file mode 100644 index 00000000000..d2b84a91526 --- /dev/null +++ b/Master/texmf-dist/source/latex/komacv-rg/komacv-rg.ins @@ -0,0 +1,38 @@ +%% +%% Copyright (C) 2016-2017 by Richard Gay <richard.gay@t-online.de> +%% +%% This file may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License, either version 1.2 of this license +%% or (at your option) any later version. The latest version of this +%% license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.2 or later is part of all distributions of LaTeX version +%% 1999/12/01 or later. +%% +\input docstrip.tex +\keepsilent + +\usedir{tex/latex/komacv-rg} +\preamble + +Copyright (C) 2016-2017 by Richard Gay <richard.gay@t-online.de> + +This file may be distributed and/or modified under the conditions of +the LaTeX Project Public License, either version 1.2 of this license +or (at your option) any later version. The latest version of this +license is in: + + http://www.latex-project.org/lppl.txt + +and version 1.2 or later is part of all distributions of LaTeX version +1999/12/01 or later. + +\endpreamble + +\generate{\file{komacv-multilang.sty}{\from{komacv-multilang.dtx}{package}}} +\generate{\file{komacv-lco.sty}{\from{komacv-lco.dtx}{package}}} +\generate{\file{komacv-addons.sty}{\from{komacv-addons.dtx}{package}}} + +\endbatchfile |