%%%==============================================================================
% WinEdt pragmas
% !Mode:: "TeX:EN"
% Default Compile engines:
% !TEX program = pdflatex
% !PDFTeXify ext =  --enable-etex  --restrict-write18
% !PDFLaTeX ext  =  --enable-etex  --restrict-write18
% !BIB program = none
%%%==============================================================================
%% Copyright 2025-present by Alceu Frigeri
%%
%% This work may be distributed and/or modified under the conditions of
%%
%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
%%   version 1.3c (or later), and/or
%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
%%   version 3 (or later)
%%
%% This work has the LPPL maintenance status *maintained*.
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
%% This is version {1.0b} {2025/11/15}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/afperpack
%%
%%%==============================================================================
\documentclass[10pt]{article}
\RequirePackage[verbose,a4paper,marginparwidth=27.5mm,top=2.5cm,bottom=1.5cm,hmargin={40mm,20mm},marginparsep=2.5mm,columnsep=10mm,asymmetric]{geometry}
\usepackage[infograb]{codedescribe}
\RequirePackage[inline]{enumitem}
\SetEnumitemKey{miditemsep}{parsep=0ex,itemsep=0.4ex}

\usepackage[math,tikz,listings,graphicx,english]{afperpack}

\RequirePackage[hidelinks,hypertexnames=false]{hyperref}

\begin{document}
\tstitle{
  author={Alceu Frigeri\footnote{\tsverb{https://github.com/alceu-frigeri/afperpack}}},
  date={\tsdate},
  title={The afperpack Package\break Personal settings and preferences \break Version \PkgInfo{afperpack}{version}}
  }
  

\begin{typesetabstract}
This bundle includes  a personal pre-configuration package, which (selectively) loads package sets with the author pre-defined package options.

\end{typesetabstract}

\tableofcontents

\section{Introduction}

This is what is left from ``my personal packages''. I started, a few years ago (2022), to untangle the many personal packs/hacks that I was using, documenting them and publishing them at CTAN, and, finally, after almost 3 years (2025), this is what is left: Just an auxiliary package that pre-loads the packages I use the most, and define one single (well two) command(s). So, now, when I share a \LaTeX\ file with a colleague, he/she won't come back asking me how to compile it (because they lack ``my hacks'').

\section{Package Options}

\begin{describelist}{key}
  \describe{showframe}{For geometry/format ``proofing''. This will just load the \tsobj[pkg]{showframe} package.}
  \describe{showlabels}{For labels placement/location ``proofing''. This will just load the \tsobj[pkg]{showlabels} package.}
  \describe{english}{Babel will be loaded with \tsobj[option]{english} option. Otherwise \tsobj[option]{brazilian}. }
  \describe{beamer}{This will suppress the loading of the \tsobj[pkg]{geometry,titlesec,listings} packages. It doesn't loads \tsobj[pkg]{beamer}.}
  \describe{xpacks}{The packages \tsobj[pkg]{longtable,xpacks,csquotes,caption,supcaption,url,multirow,bigdelim} will be loaded.}
  \describe{times}{This will load the \tsobj[pkg]{mathptmx} package (times roman) instead of (default) \tsobj[pkg]{lmodern}.}
  \describe{noquests}{This will suppress the loading of the \tsobj[pkg]{tikzquests} package.}
  \describe{tikz}{This will load \tsobj[pkg]{tikz,circuitikz,tikzquads,tikzdotncross,pgfplots,tikzfxgraph} packages (and \tsobj[pkg]{tikzquests}, if not suppressed).}
  \describe{graphicx}{This will load the \tsobj[pkg]{graphicx} package.}
  \describe{math}{This will load the \tsobj[pkg]{
  amsmath , amsfonts , amssymb , amsthm , mathrsfs , mathtools, empheq , extarrows, steinmetz, mathfixs , siunitx , cases } packages.}
  \describe{listings}{This will load the \tsobj[pkg]{listings} package. (if \tsobj[option]{beamer} is false)}
  \describe{landscape}{Sets geometry for a landscape document}
  \describe{fxgraph}{(defaults to nothing) Options passed along to \tsobj[pkg]{tikzfxgraph} package, e.g. \tsobj[option]{fxgraph=\{use file\}}.}
  \describe{quests}{(defaults to nothing) Options passed along to \tsobj[pkg]{tikzquests} package, e.g. \tsobj[option]{quests=\{xtrakeys=\{D\}\}}.}
  \describe{dotncross}{(defaults to nothing) Options passed along to \tsobj[pkg]{tikzdotncross} package, e.g. \tsobj[option]{dotncross=\{coordcolor=\{blue\}\}}.}
\end{describelist}

Note that \tsobj[pkg]{etoolbox,fontenc,inputenc,xcolors,enumitem} will always be loaded. Besides those \tsobj[pkg]{geometry} will (if not already) as well \tsobj[pkg]{titlesec,listings} if \tsobj[option]{beamer} is false.

\section{Commands}


\begin{codedescribe}{\cab}
\begin{codesyntax}%
\tsmacro{\cab}{options}\tsargs[oarg]{extra}
\end{codesyntax}
This will typesets, in a new page, a typical exam header. \tsobj[oarg]{extra} will be (if present) typeset as is, in a box below the main cab. \tsobj[marg]{options} is a key=val list of:
\begin{describelist*}{key}
  \describe{uni}{University's name. (default: Universidade Federal do Rio Grande do Sul)}
  \describe{dept}{Department's name. (default: Escola de Engenharia / DELAE)}
  \describe{class}{Class' name. (default: disciplina)}
  \describe{classcode}{Class' code. (default: ENGcode)}
  \describe{exam}{Exam text. (default: Verificação de Aproveitamento)}
  \describe{sem}{Semester. (default: 202x/Y)}
  \describe{semester}{alias to \tsobj[key]{sem}.}
  \describe{name label}{Student`s label. (default: Nome)}
  \describe{id label}{Student`s ID label. (default: Cartão)}
  \describe{duo label}{Duo labe. (default: Dupla)}
  \describe{duo}{If true, a duo label will be added to the identification lines (default: false)}
  \describe{nonames}{If true, the identification lines will be suppressed.}
  \describe{simplegrad}{If true, the grad option box will be used, with a preset text. (default: false)}
  \describe{simplegrad text}{Changes the default text of a simplegrad box.}
\end{describelist*}
\end{codedescribe}

For example:
\begin{codestore}[af-01]
  \cab{
    class={Eletrônica I} , classcode=ENG10044 , 
    exam = {$1^a$ Verificação} , sem = {2025/1} , simplegrad 
  }
\end{codestore}
\tscode*[emph={class,classcode,exam,sem,simplegrad,uni,dept,name,id,duo,label,nonames}]{af-01}

\begin{codedescribe}{\pgfmathparseFPU}
  \begin{codesyntax}
    \tsmacro{\pgfmathparseFPU}{math-expr}
  \end{codesyntax}
  This command is defined if, and only if, the \tsobj[option]{tikz} option is used. It will process \tsobj[marg]{math-expr} with \tsobj{\pgfmathparse} whilst the \tsobj[key]{/pgf/fpu} key is active, which greatly extends the \TeX\ number's range. See the \tsobj[pkg]{fpu} library from \tsobj[pkg]{tikz} for more details.
\end{codedescribe}

%
%\newpage
%\PkgInfoMapOver
%  {
%   \PkgInfoDescription{#1}
%  }

\end{document} 