%%%============================================================================== %% 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.0} {2025/04/25} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/afperpack %% %%%============================================================================== \NeedsTeXFormat{LaTeX2e}[2022/06/01] \ProvidesExplPackage {afperpack} {2025/04/25} {1.0} {afperpack personal package/preferences.} %%%%%%% %%% %%% Just an attempt of having my packages info in a regular way %%% Idea being: { / pkg info } for each and all. %%% %%%%%%% \keys_define:nn { afperpack / pkg info} { name .code:n = {afperpack} , prefix .code:n = {afperpack} , date .code:n = {2025/04/25}, version .code:n = {1.0} , description .code:n = {afperpack personal package/preferences.} } \cs_if_exist:NF \PkgInfo { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } \NewDocumentCommand \PkgDescription {m} { \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par } } %%%%%%% %%% End of cut-n-paste %%%%%%% \RequirePackage{etoolbox} \RequirePackage[T1]{fontenc} \RequirePackage[utf8]{inputenc} \keys_define:nn {afperpack } { showframe .usage:n = load , showframe .bool_set:N = \l__afperpack_showframe_bool , showlabels .usage:n = load , showlabels .bool_set:N = \l__afperpack_showlabels_bool , english .usage:n = load , english .bool_set:N = \l__afperpack_english_bool , beamer .usage:n = load , beamer .bool_set:N = \l__afperpack_beamer_bool , xpacks .usage:n = load , xpacks .bool_set:N = \l__afperpack_xpacks_bool , times .usage:n = load , times .bool_set:N = \l__afperpack_times_bool , noquests .usage:n = load , noquests .bool_set:N = \l__afperpack_noquests_bool , tikz .usage:n = load , tikz .bool_set:N = \l__afperpack_tikz_bool , graphicx .usage:n = load , graphicx .bool_set:N = \l__afperpack_graphicx_bool , math .usage:n = load , math .bool_set:N = \l__afperpack_math_bool , listings .usage:n = load , listings .bool_set:N = \l__afperpack_listings_bool , } \ProcessKeyOptions [ afperpack ] % % to be used "outside" expl3 % \newif\ifafperpack@@tikz \afperpack@@tikzfalse \bool_if:nT {\l__afperpack_tikz_bool} { \afperpack@@tikztrue } \RequirePackage{xcolor} \bool_if:nTF {\l__afperpack_beamer_bool} {} { %beamer doesn't work with these \@ifpackageloaded{geometry}{}{\RequirePackage[a4paper,margin=15mm,right=15mm,marginparwidth=0cm,asymmetric,top=2.5cm,bottom=1.5cm]{geometry}} \RequirePackage[calcwidth]{titlesec} \bool_if:nT {\l__afperpack_listings_bool} { \RequirePackage{listings} \definecolor{lstgray}{rgb}{0.965,0.965,0.965}% \lstset{ basicstyle=\ttfamily\small, columns=fullflexible, keepspaces=true, frame=tb, inputencoding=latin1, % inputencoding=utf8, extendedchars=true, backgroundcolor=\color{lstgray}, breaklines=true, % xleftmargin=7pt, % xrightmargin=7pt }% %%% %%% from https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings#Encoding_issue \lstset{ literate= {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1 {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1 {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1 {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1 {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1 {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1 {ã}{{\~{a}}}1 {õ}{{\~{o}}}1 {Ã}{{\~{A}}}1 {Õ}{{\~{O}}}1 {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1 {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1 {€}{{\EUR}}1 {£}{{\pounds}}1 } } } \bool_if:nT {\l__afperpack_showframe_bool} { \RequirePackage{showframe} } \bool_if:nT {\l__afperpack_showlabels_bool} { \RequirePackage{showlabels} } \bool_if:nTF \l__afperpack_english_bool { \RequirePackage[english]{babel} } { \RequirePackage[brazilian]{babel} } \bool_if:nT {\l__afperpack_xpacks_bool} { \RequirePackage{longtable}% \RequirePackage{fancyhdr} \RequirePackage{csquotes} \RequirePackage[position=above,font=small,labelfont=bf,textfont=md,textfont+=sl,width=.80\textwidth]{caption} \RequirePackage{subcaption} \RequirePackage{url} \RequirePackage{multirow,bigdelim} } \bool_if:nTF {\l__afperpack_times_bool} { \RequirePackage{mathptmx} } %for those times... { \RequirePackage{lmodern} } %default font \RequirePackage{enumerate} % % Sometimes needed % \bool_if:nT {\l__afperpack_graphicx_bool} { \RequirePackage{ graphicx } } % % Most of the time, if not always needed % \bool_if:nT {\l__afperpack_math_bool} { \RequirePackage{ amsmath , amsfonts , amssymb } \RequirePackage{ amsthm } \RequirePackage{ mathrsfs } %for \mathscr letters \RequirePackage{ mathtools,empheq } \RequirePackage{ extarrows, steinmetz, mathfixs } \RequirePackage{ siunitx } \RequirePackage{ cases } } % % pgf/tikz packages can't be loaded in an Expl3 code regim % \ExplSyntaxOff % % My standard circuitikz setup % \ifafperpack@@tikz \RequirePackage[american,siunitx,cuteinductors,smartlabels,arrowmos,EFvoltages,betterproportions]{circuitikz} \usetikzlibrary{fit,math,calc} \usetikzlibrary{fpu} \usetikzlibrary{arrows,shapes} \usetikzlibrary{shapes.geometric} %needed for the triangle \usetikzlibrary{shapes.misc} %needed for the triangle \usetikzlibrary{graphs,3d} \usetikzlibrary{datavisualization,datavisualization.formats.functions} \usetikzlibrary[commutative-diagrams] %% oriented graphs. % % For the brave and unaware... % \NewDocumentCommand{\pgfmathparseFPU}{+m} { \begingroup \pgfkeys{ /pgf/fpu, /pgf/fpu/output format=fixed } \pgfmathparse{#1} \pgfmathsmuggle\pgfmathresult \endgroup } % % To draw graphs... together with tikzfxgraph (below) % \RequirePackage{pgfplots} \pgfplotsset{compat=1.18} \usetikzlibrary{pgfplots.units} \fi \ExplSyntaxOn \bool_if:nT {\l__afperpack_tikz_bool} { % % My standard circuitikz setup % \RequirePackage{tikzdotncross} \bool_if:nF {\l__afperpack_noquests_bool} { \@ifpackageloaded{tikzquests}{}{\RequirePackage[xtrakeys={D}]{tikzquests}} } \RequirePackage{tikzquads} % % To draw graphs... % \RequirePackage{tikzfxgraph} } \keys_define:nn {afperpack / cab} { uni .usage:n = general , uni .tl_set:N = \l__afperpack_uni_tl , uni .default:n = {Universidade ~\ Federal\ ~ do\ ~ Rio\ ~ Grande\ ~ do\ ~ Sul} , dept .usage:n = general , dept .tl_set:N = \l__afperpack_dept_tl , dept .default:n = {Escola\ ~ de\ ~ Engenharia\ ~ /\ ~ DELAE} , class .usage:n = general , class .tl_set:N = \l__afperpack_class_tl , class .default:n = {disciplina} , classcode .usage:n = general , classcode .tl_set:N = \l__afperpack_code_tl , classcode .default:n = {ENGcode} , exam .usage:n = general , exam .tl_set:N = \l__afperpack_exam_tl , exam .default:n = {Verificação de Aproveitamento} , sem .usage:n = general , sem .tl_set:N = \l__afperpack_sem_tl , sem .default:n = {202x / y} , name~ label .usage:n = general , name~ label .tl_set:N = \l__afperpack_name_label_tl , name~ label .default:n = {Nome} , id~ label .usage:n = general , id~ label .tl_set:N = \l__afperpack_id_label_tl , id~ label .default:n = {Cartão} , duo~ label .usage:n = general , duo~ label .tl_set:N = \l__afperpack_duo_label_tl , duo~ label .default:n = {Dupla} , simplegrad .usage:n = general , simplegrad .bool_set:N = \l__afperpack_simplegrad_bool , duo .usage:n = general , duo .bool_set:N = \l__afperpack_duo_bool , nonames .usage:n = general , nonames .bool_set:N = \l__afperpack_nonames_bool , default .usage:n = general , default .meta:n = { uni , dept , class , classcode , exam , sem , duo~ label, id~ label , name~ label , simplegrad = false , duo = false , nonames = false } , default .value_forbidden:n = true , } \cs_new_protected:Npn \__afperpack_simplecab: { \fbox{ \footnotesize \begin{minipage}{.6\textwidth} Assinalar~ um~ “\textbf{X}”,~ no~ tipo~ de~ correção~ a~ ser~ realizada. \begin{description} \item[(~\ )~ Simplificada]~ Será~ atribuída~ uma~ nota~ igual~ a~ $3$~ –--~ independente~ do~ que~ estiver~ escrito~ na~ prova. \item[(~\ )~ Completa]~ Todas~ as~ questões~ serão~ corrigidas~ e~ a~ nota~ será~ dada~ pela~ soma~ dos~ pontos~ obtidos~ em~ cada~ questão.~ Neste~ caso,~ a~ nota~ estará~ no~ intervalo~ $[0;10]$. \end{description} \end{minipage} }\\[3ex] } \NewDocumentCommand{\cab}{m} { \keys_set:nn{afperpack / cab}{default , #1} \bool_lazy_or:nnTF {\tl_if_blank_p:V \l__afperpack_code_tl}{\tl_if_empty_p:V \l__afperpack_class_tl} { \tl_set:Nn \l_tmpa_tl {} } { \tl_set:Nn \l_tmpa_tl {\ ~-\ ~} } \bool_lazy_or:nnTF {\tl_if_blank_p:V \l__afperpack_exam_tl}{\tl_if_blank_p:V \l__afperpack_sem_tl} { \tl_set:Nn \l_tmpb_tl {} } { \tl_set:Nn \l_tmpb_tl {\ ~-\ ~} } % \newpage \begin{center} { \sc\large \l__afperpack_uni_tl\\ \l__afperpack_dept_tl\\ \l__afperpack_code_tl \l_tmpa_tl \l__afperpack_class_tl\\ \l__afperpack_exam_tl \l_tmpb_tl \l__afperpack_sem_tl\\[2ex] } \bool_if:nT {\l__afperpack_simplegrad_bool} { \__afperpack_simplecab: } \bool_if:nF {\l__afperpack_nonames_bool} { \l__afperpack_name_label_tl :\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots\vspace{10mm} \l__afperpack_id_label_tl :\ldots\ldots\ldots\ldots\ldots\ldots } \bool_if:nT {\l__afperpack_duo_bool} { \\[-3ex] \l__afperpack_duo_label_tl :\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots\vspace{10mm} \l__afperpack_id_label_tl :\ldots\ldots\ldots\ldots\ldots\ldots } \end{center} }