% \iffalse meta-comment
%
%% apuntsfme.dtx
%% Copyright 2019 ApuntsFME
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% 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.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
% 
% The Current Maintainer of this work is the ApuntsFME organization.
%
% This work consists of the files apuntsfme.dtx and apuntsfme.ins
% and the derived file apuntsfme.sty.
%
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{apuntsfme.dtx}
%</driver>
%
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{apuntsfme}[2019/07/08 v1.o .dtx apuntsfme file]
%
%<class>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<class>\ProvidesClass{notes}[2019/10/12 v1.0 class for taking notes in class]
%
%<*driver>
\documentclass{ltxdoc}
\usepackage{apuntsfme}
\usepackage{hyperref}
\usepackage{csquotes}
\usepackage{booktabs}
\usepackage{longtable}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
    \DocInput{apuntsfme.dtx}
\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.0}{2019/07/14}{Initial version}
%
% \GetFileInfo{apuntsfme.sty}
%
%
% \title{The \textsf{ApuntsFME} package\thanks{This document
%   corresponds to \textsf{apuntsfme}~\fileversion,
%   dated~\filedate.}}
% \author{Ernesto Lanchares\\ \href{mailto:e.lancha98@gmail.com}{e.lancha98@gmail.com} \and Oscar Benedito \\ \href{mailto:oscar@oscarbenedito.com}{oscar@oscarbenedito.com}}
%
% \maketitle
%
% \begin{abstract}
%   A package that aims to make taking notes in math class in \LaTeX\ easy.
% \end{abstract}
%
% The goal of this package is make taking notes on class easy. It includes a lot of packages and shortcuts
% that aim to make it easy to remember and easy to type. Note that this package is not meant to set a
% reference in how \LaTeX\ should be writter nor it's meant to be a guideline of any kind.
%
% \section{The ApuntsFME package}
% The ApuntsFME package has the purpose of providing the shortcuts and
% environments used for short typing.
%
% \subsection{Packages imported}
% As mentioned, this package collects a lot of other packages all very common to math typing. Here's a
% table with all of them and the use that they provide.
%
% \begin{longtable}{p{.2\textwidth}p{.6\textwidth}}
%     Package & Usage \\ \toprule \toprule
%     \endhead
%     \bottomrule \multicolumn{2}{c}{{Continued on next page}} \\
%     \endfoot
%     \bottomrule
%     \endlastfoot
%     inputenc & loaded with the \texttt{utf-8} option, used so the characters
%     are interpreted as unicode text \\ \midrule
%     fontenc & loaded with the \texttt{T1} option. It's used so, in the output
%     PDF, you can search for accented words \\ \midrule
%     lmodern & To have the fonts have high quality \\ \midrule
%     hyperref & To have clickable links and urls \\ \midrule
%     enumitem & loaded with \texttt{shortlabels}. Used to control enumerates \\
%     \midrule
%     amsmath & The American Mathematical Society \LaTeX\ package. Loads common
%     math utilities \\ \midrule
%     amsthm & The American Mathematical Society package used to typeset
%     theorems, propositions, \dots \\ \midrule
%     amssymb & The American Mathematical Society pacakgae that defines a lot of
%     ``common'' symbols \\ \midrule
%     graphicx & A lot of support for graphics inside the document \\ \midrule
%     mathtools & A set of mathematical tools. \\ \midrule
%     tikz & A package to create graphics inside \LaTeX. \\ \midrule
%     makeidx & This is what creates the glossary with the definitions. \\
%     \midrule
%     cancel & This package allows to cancel things in equations by marking them
%     with a line (just as you would do in a paper) \\ \midrule
%     pgf & Is the backend of \texttt{pgfplots} \\ \midrule
%     pgfplots & This is used with \texttt{tikz} to make axis plots \\ \midrule
%     mathrsfs & Support for using RSFS fonts in maths \\ \midrule
%     thmtools & This is used to furder customize the \texttt{amsthm}
%     environments \\ \midrule
%     tikz-cd & An extension of \texttt{tikz} to create commutative diagrams \\
%     \midrule
%     faktor & Used to typeset quotient structures \\ \midrule
%     physics & More macros for maths \\ \midrule
%     float & Let's you controll the figures position \\ \midrule
% \end{longtable}
%
% It's interesting to note that we load TiKz and PGF because we bet for making
% the figures inside \LaTeX\ and not with another external tool. However, this
% has a drawback and is that it reduces compilation times by quite a lot. To
% mitigate that effect we also use \texttt{external} with TiKz. This library,
% makes the first computation very very slow and creates a directory with all
% the figures generated from the code. Then, the rest of the compilations just
% need to import that precomputed figure so they are a lot faster. This
% behaviour can be turned off by the \texttt{noexternal} option.
%
% You also can controll the output folder of these figures with the option
% \texttt{externalfolder}. Here's an example in how to put the figures in the
% folder myfigures. But remember that this option will be ignored if you use 
% \texttt{noexternal}.
%
% \begin{verbatim}
% \usepackage[externalfolder=myfigures]{apuntsfme}
% \end{verbatim}
%
% \StopEventually{}
%
% \section{Package implementation}
% \iffalse
%<*package>
% \fi
% \subsection{Includes}
%
% In the first place, we need to import some other packages (in fact, a lot of them). We
% considered that there's no need in reinventing the wheel so our work is based on this packages
% 
%    \begin{macrocode}
\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}
\RequirePackage{lmodern}
\RequirePackage{hyperref}
\RequirePackage[shortlabels]{enumitem}
\RequirePackage{amsmath,amsthm,amssymb,graphicx,mathtools,tikz,makeidx}
\RequirePackage{cancel,pgf,pgfplots,mathrsfs,thmtools,tikz-cd,faktor}
\RequirePackage{physics,float}
%    \end{macrocode}
%
% Then we have lots of packages that we want to remove but have some documents that use them
% so we don't remove them because laziness.
%    \begin{macrocode}
\RequirePackage{xfrac} % Fa els sfrac, per cert un a multi esta malamanet??
\RequirePackage{siunitx} %Crec que cal canviar codi
\RequirePackage{centernot} % Aixo es exclusiu d'estructures per fer un \not concret als mid?
\RequirePackage{multicol} % Exclusiu dels formularis?
\RequirePackage{xcolor} % Aixo potser es d'un document concret
\RequirePackage{needspace} %No se si es gaire util, compila sense incloure'l
\RequirePackage{commath} % Aquest implement els \dif, cal canviar tot el codi per ferho amb physics
\RequirePackage{dsfont} % No se que fa, compila si el trec
\RequirePackage{mdframed,cleveref,stackengine,stmaryrd,multirow}
%    \end{macrocode}
%
%
% And some style definitions, just because we can.
%    \begin{macrocode}
\let\emptyset\varnothing
\setcounter{secnumdepth}{4}
\def\mydate{\today}
\hypersetup{
    colorlinks,
    linkcolor=blue
}
%    \end{macrocode} 
%
% \subsection{Useful commands}
% In this section we provide some useful commands.
%
% We start with some commands that need to be removed but again, laziness
%    \begin{macrocode}
%\newcommand{\ap}[1]{\ensuremath\overline{#1}}
%\newcommand{\Sup}[1]{\ensuremath\underset{#1}{\sup}}
%\newcommand{\Max}[1]{\ensuremath\underset{#1}{\max}}
%\newcommand{\Min}[1]{\ensuremath\underset{#1}{\min}}
%\newcommand{\scin}[1]{\ensuremath\SI{#1}{}}
\newcommand\comp[1]{\overline{#1}} % Treure? #SouUnsVagos
\newcommand\inv[1]{#1^{-1}} % Habra que sacarlo de algun documento?
\newcommand{\ita}[1]{\textit{#1}}   % Habra que sacarlo de algun documento?
\newmdenv[leftline=false,topline=false]{topright}
%    \end{macrocode}
%
% Now we can proceed into the part that we are proud of. First some commands
%    \begin{macrocode}
%\newcommand\mapsfrom{\mathrel{\reflectbox{\ensuremath{\mapsto}}}} %Already defined?
\newcommand*{\bimplies}{\boxed{\implies}}
\newcommand*{\bimpliedby}{\boxed{\impliedby}}
%    \end{macrocode}
%
% \subsubsection{Mathbb commands}
% Again, with some parts that needs removing/refactoring
%    \begin{macrocode}
\newcommand{\n}{\mathbb{N}}
\newcommand{\z}{\mathbb{Z}}
\newcommand{\q}{\mathbb{Q}}
\newcommand{\cx}{\mathbb{C}}
\renewcommand{\real}{\mathbb{R}}
\newcommand{\E}{\mathbb{E}}
\newcommand{\F}{\mathbb{F}}
\newcommand{\A}{\mathbb{A}}
\newcommand{\bb}[1]{\mathbb{#1}}
\newcommand{\Po}{\mathbb{P}}
\newcommand{\esp}{\mathbb{E}}
\DeclareMathOperator{\cov}{\mathbb{C}ov} % TODO esto que?
\let\var\relax
\DeclareMathOperator{\var}{\mathbb{V}ar} % TODO esto que?
%    \end{macrocode}
%
% \subsubsection{Mathcal commands}
%
%    \begin{macrocode}
\newcommand{\R}{\mathcal{R}}
\newcommand{\Pa}{\mathcal{P}}
\newcommand{\Es}{\mathcal{E}}
\newcommand{\V}{\mathcal{V}}
\newcommand{\T}{\mathcal{T}}
\newcommand{\B}{\mathcal{B}}
\let\O\relax
\newcommand{\O}{\mathcal{O}}
\newcommand{\Sim}{\mathcal{S}}
\newcommand{\Asim}{\mathcal{A}} % TODO aquest i el dabaix son el mateix
\newcommand{\Asuc}{\mathcal{A}} % Conjunt de successos
\newcommand{\matspace}{\mathcal{M}} %Espai de matrius
%    \end{macrocode}
%
% \subsubsection{Mathscr and others}
%    \begin{macrocode}
\newcommand{\C}{\mathscr{C}}
\let\k\relax
\newcommand{\k}{\Bbbk}
%    \end{macrocode}
%
% \subsubsection{Math utilities}
%    \begin{macrocode}
\newcommand{\trir}{\triangleright}
\newcommand{\tril}{\triangleleft}
\newcommand{\limvar}[2]{\lim\limits_{#1 \rightarrow #2}} % Para escribir limites más rapido
\newcommand{\notimplies}{\mathrel{{\ooalign{\hidewidth$\not\phantom{=}$%
        \hidewidth\cr$\implies$}}}}
\newcommand{\defeq}{\stackrel{\text{\tiny def}}{=}} % Símbol 'definit com'
\def\upint{\mathchoice%
    {\mkern13mu\overline{\vphantom{\intop}\mkern7mu}\mkern-20mu}%
    {\mkern7mu\overline{\vphantom{\intop}\mkern7mu}\mkern-14mu}%
    {\mkern7mu\overline{\vphantom{\intop}\mkern7mu}\mkern-14mu}%
    {\mkern7mu\overline{\vphantom{\intop}\mkern7mu}\mkern-14mu}%
  \int}
\def\lowint{\mkern3mu\underline{\vphantom{\intop}\mkern7mu}\mkern-10mu\int}
%    \end{macrocode}
%
% \subsubsection{Left-right thing}
% For good practice this ones should be removed but hey using an IDE with macro insertion
% is aparently very difficult...
%    \begin{macrocode}
\newcommand\setb[1]{\left\{#1\right\}}  % Deberia irse?
\newcommand{\vbrack}[1]{\langle #1\rangle}
\newcommand{\spr}[1]{\langle #1 \rangle} % TODO aquest i lanterior son el mateix
\newcommand{\lp}{\left(}
\newcommand{\rp}{\right)}
\newcommand{\lc}{\left\{}
\newcommand{\rc}{\right\}}
\newcommand{\lb}{\left[}
\newcommand{\rb}{\right]}
%    \end{macrocode}
%
% \subsubsection{Math operators}
%    \begin{macrocode}
\DeclareMathOperator{\Ec}{Ec}
\DeclareMathOperator{\Ep}{Ep}
\DeclareMathOperator{\orden}{o}
\DeclareMathOperator{\ord}{ord}
\DeclareMathOperator{\card}{card}
\DeclareMathOperator{\mcm}{mcm}
\DeclareMathOperator{\mcd}{mcd}
\DeclareMathOperator{\lcm}{lcm}
\DeclareMathOperator{\Em}{Em}
\DeclareMathOperator*{\argmax}{arg\,max}
\DeclareMathOperator*{\argmin}{arg\,min}
\DeclareMathOperator{\fr}{Fr}
\DeclareMathOperator{\Id}{Id}
\DeclareMathOperator{\ext}{Ext}
\DeclareMathOperator{\inte}{Int}
\DeclareMathOperator{\rie}{Rie}
\DeclareMathOperator{\rg}{rg}
\DeclareMathOperator{\gr}{gr}
\DeclareMathOperator{\nuc}{Nuc}
\DeclareMathOperator{\car}{car}
\DeclareMathOperator{\im}{Im}
\DeclareMathOperator{\re}{Re}
\DeclareMathOperator{\spec}{Spec}
\DeclareMathOperator{\Log}{Log}
\DeclareMathOperator{\Arg}{Arg}
%\DeclareMathOperator{\tr}{tr} % Already in physics
\DeclareMathOperator{\vol}{vol}
%\DeclareMathOperator{\grad}{grad} % Already in physics
\DeclareMathOperator{\rot}{rot}
\DeclareMathOperator{\diver}{div}
\DeclareMathOperator{\sinc}{sinc}
\DeclareMathOperator{\graf}{graf}
\DeclareMathOperator{\TQ}{\text{ tal que }}
\DeclareMathOperator{\tq}{\;t.q.\;}
\DeclareMathOperator{\disc}{disc}
\DeclareMathOperator{\fl}{fl} % Representación en coma flotante
\DeclareMathOperator{\sgn}{sgn} % Función signo (sgn) de una permutación
\DeclareMathOperator{\diag}{diag} % Notación corta para matriz diagonal: diag(d_1,...,d_n)
\DeclareMathOperator{\vspan}{span}
%    \end{macrocode}
%
% \subsubsection{Index}
%    \begin{macrocode}
\newcounter{apuntsfme@index}
\setcounter{apuntsfme@index}{1}
\def\consume#1{}%
\def\printcmd{\expandafter\consume\string}
\def\idx#1{%
        \edef\apuntsfme@tmp{apuntsfme@index:\Roman{apuntsfme@index}}%
	\expandafter\label\expandafter{\apuntsfme@tmp}%
	\expandafter\xdef\csname indice\Roman{apuntsfme@index}\endcsname%
        ##1{\noexpand\hyperref[apuntsfme@index:\Roman{apuntsfme@index}]{##1}}%
	\index{#1|\expandafter\printcmd\csname indice\Roman{apuntsfme@index}\endcsname}%
	\stepcounter{apuntsfme@index}%
}

\makeindex
\RequirePackage[totoc]{idxlayout} % Glossari a l'índex
%    \end{macrocode}
%
% \subsection{Environments}
% Here we define the environments in which the notes we take are based on.
%
% TODO add an option to the package to select the position of the number (before/after)
%    \begin{macrocode}
\newtheoremstyle{break}% name
{}%         Space above, empty = `usual value'
{}%         Space below
{}% Body font
{}%         Indent amount (empty = no indent, \parindent = para indent)
{\bfseries}% Thm head font
{}%        Punctuation after thm head
{5pt plus 1pt minus 1pt}% Space after thm head: \newline = linebreak
{\thmname{#1}\thmnumber{ #2}.\thmnote{ {\it #3.}\newline}}%         Thm head spec

\newtheoremstyle{demo}% name
{}%         Space above, empty = `usual value'
{}%         Space below
{}% Body font
{}%         Indent amount (empty = no indent, \parindent = para indent)
{\it}% Thm head font
{}%        Punctuation after thm head
{5pt plus 1pt minus 1pt}% Space after thm head: \newline = linebreak
{#1\thmnote{ #3}.}%         Thm head spec

\newtheoremstyle{breakthm}% name
{}%         Space above, empty = `usual value'
{}%         Space below
{}% Body font
{}%         Indent amount (empty = no indent, \parindent = para indent)
{\bfseries}% Thm head font
{}%        Punctuation after thm head
{\newline}% Space after thm head: \newline = linebreak
{\thmname{#1}\thmnumber{ #2}.\thmnote{ {\it #3.}}\addcontentsline{toc}{subsection}{#3}}%         Thm head spec

\newtheoremstyle{normal}% name
{}%         Space above, empty = `usual value'
{}%         Space below
{}% Body font
{}%         Indent amount (empty = no indent, \parindent = para indent)
{\bfseries}% Thm head font
{}%        Punctuation after thm head
{5pt plus 1pt minus 1pt}% Space after thm head: \newline = linebreak
{\thmname{#1}\thmnumber{ #2}.\thmnote{ {\it #3.}}}%         Thm head spec

\newtheoremstyle{autodefi}% name
{}%         Space above, empty = `usual value'
{}%         Space below
{}% Body font
{}%         Indent amount (empty = no indent, \parindent = para indent)
{\bfseries}% Thm head font
{}%        Punctuation after thm head
{5pt plus 1pt minus 1pt}% Space after thm head: \newline = linebreak
{\idx{#3}\thmname{#1}\thmnumber{ #2}.}% Thm head specko
%    \end{macrocode}
%
% \subsection{Options}
% Here we have some options for the package
%
% \subsubsection{Babel}
% TODO add english support and make it the default
%    \begin{macrocode}
\DeclareOption{numbersbefore}{
    \newtheoremstyle{break}% name
    {}%         Space above, empty = `usual value'
    {}%         Space below
    {}% Body font
    {}%         Indent amount (empty = no indent, \parindent = para indent)
    {\bfseries}% Thm head font
    {}%        Punctuation after thm head
    {5pt plus 1pt minus 1pt}% Space after thm head: \newline = linebreak
    {\thmnumber{#2}. \thmname{#1.}\thmnote{ {\it #3.}\newline}}%         Thm head spec

    \newtheoremstyle{demo}% name
    {}%         Space above, empty = `usual value'
    {}%         Space below
    {}% Body font
    {}%         Indent amount (empty = no indent, \parindent = para indent)
    {\it}% Thm head font
    {}%        Punctuation after thm head
    {5pt plus 1pt minus 1pt}% Space after thm head: \newline = linebreak
    {#1\thmnote{ #3}.}%         Thm head spec

    \newtheoremstyle{breakthm}% name
    {}%         Space above, empty = `usual value'
    {}%         Space below
    {}% Body font
    {}%         Indent amount (empty = no indent, \parindent = para indent)
    {\bfseries}% Thm head font
    {}%        Punctuation after thm head
    {\newline}% Space after thm head: \newline = linebreak
    {\thmnumber{#2}. \thmname{#1.}\thmnote{ {\it #3.}}\addcontentsline{toc}{subsection}{#3}}%         Thm head spec

    \newtheoremstyle{normal}% name
    {}%         Space above, empty = `usual value'
    {}%         Space below
    {}% Body font
    {}%         Indent amount (empty = no indent, \parindent = para indent)
    {\bfseries}% Thm head font
    {}%        Punctuation after thm head
    {5pt plus 1pt minus 1pt}% Space after thm head: \newline = linebreak
    {\thmnumber{#2}. \thmname{#1.}\thmnote{ {\it #3.}}}%         Thm head spec

    \newtheoremstyle{autodefi}% name
    {}%         Space above, empty = `usual value'
    {}%         Space below
    {}% Body font
    {}%         Indent amount (empty = no indent, \parindent = para indent)
    {\bfseries}% Thm head font
    {}%        Punctuation after thm head
    {5pt plus 1pt minus 1pt}% Space after thm head: \newline = linebreak
    {\idx{#3}\label{defi:#2}\thmnumber{#2}. \thmname{#1.}}% Thm head specko
}
\newif\if@babel\@babeltrue
\newcount\@babellang
\@babellang=0
\def\@babelopt{english}
\DeclareOption{nobabel}{
  \@babelfalse
}
\DeclareOption{catalan}{
    \gdef\@babelopt{catalan}
    \@babellang=1
}
\DeclareOption{spanish}{
    \gdef\@babelopt{spanish,es-lcroman,es-nolists}
    \@babellang=2
}
%    \end{macrocode}
%
% Then, we need to configure TiKz and PGF
%    \begin{macrocode}
\usetikzlibrary{positioning,arrows, calc, babel}

\newif\if@external\@externaltrue
\DeclareOption{noexternal}{
    \@externalfalse
}
\def\apunts@folder{figures/}

\pgfplotsset{compat=1.11}
%    \end{macrocode}
%
% Lastly, we procces the options.
%    \begin{macrocode}
\ProcessOptions\relax

\if@external
    \usetikzlibrary{external}
    \tikzexternalize[prefix=\apunts@folder]
\fi

\if@babel
    \PassOptionsToPackage{\@babelopt}{babel}
    \RequirePackage{babel}
\fi
\ifnum\@babellang=1
    % Normal
    \declaretheorem[style=normal,name=Lema,numberwithin=section]{lema}
    \declaretheorem[style=normal,name=Lema,numbered=no]{lema*}
    \declaretheorem[style=normal,name=Observació,sibling=lema]{obs}
    \declaretheorem[style=normal,name=Observació,numbered=no]{obs*}
    \declaretheorem[style=normal,name=Proposició,sibling=lema]{prop}
    \declaretheorem[style=normal,name=Proposició,numbered=no]{prop*}
    \declaretheorem[style=normal,name=Definició,sibling=lema]{defi*}
    \declaretheorem[style=normal,name=Coro{\lgem}ari,sibling=lema]{col}
    \declaretheorem[style=normal,name=Coro{\lgem}ari,numbered=no]{col*}
    \declaretheorem[style=normal,name=Exercici,sibling=lema]{ej}
    \declaretheorem[style=normal,name=Exercici,numbered=no]{ej*}
    \declaretheorem[style=normal,name=Exemple,sibling=lema]{example}
    \declaretheorem[style=normal,name=Exemple,numbered=no]{example*}
    \declaretheorem[style=normal,name=Problema,sibling=lema]{problema}
    \declaretheorem[style=normal,name=Problema,numbered=no]{problema*}

    % Autodefi
    \declaretheorem[style=autodefi,name=Definició,sibling=lema]{defi}

    % Demo
    \let\proof\relax
    \declaretheorem[style=demo,name=Demostració,qed=$\square$,numbered=no]{proof}
    \declaretheorem[style=demo,name=Solució,numbered=no]{sol}

    % Break
    \declaretheorem[style=break,name=Teorema,sibling=lema]{teo*}

    % Breakthm
    \declaretheorem[style=breakthm,name=Teorema,sibling=lema]{teo}

    \@ifclassloaded{book}{%
        \AtBeginDocument{\renewcommand{\chaptername}{Tema}}
    }{}
\fi
\ifnum\@babellang=2
    % Normal
    \declaretheorem[style=normal,name=Lema,numberwithin=section]{lema}
    \declaretheorem[style=normal,name=Lema,numbered=no]{lema*}
    \declaretheorem[style=normal,name=Observación,sibling=lema]{obs}
    \declaretheorem[style=normal,name=Observación,numbered=no]{obs*}
    \declaretheorem[style=normal,name=Proposición,sibling=lema]{prop}
    \declaretheorem[style=normal,name=Proposición,numbered=no]{prop*}
    \declaretheorem[style=normal,name=Definición,sibling=lema]{defi*}
    \declaretheorem[style=normal,name=Corolario,sibling=lema]{col}
    \declaretheorem[style=normal,name=Corolario,numbered=no]{col*}
    \declaretheorem[style=normal,name=Ejercicio,sibling=lema]{ej}
    \declaretheorem[style=normal,name=Ejercicio,numbered=no]{ej*}
    \declaretheorem[style=normal,name=Ejemplo,sibling=lema]{example}
    \declaretheorem[style=normal,name=Ejemplo,numbered=no]{example*}
    \declaretheorem[style=normal,name=Problema,sibling=lema]{problema}
    \declaretheorem[style=normal,name=Problema,numbered=no]{problema*}

    % Autodefi
    \declaretheorem[style=autodefi,name=Definición,sibling=lema]{defi}

    % Demo
    \let\proof\relax
    \declaretheorem[style=demo,name=Demostración,qed=$\square$,numbered=no]{proof}
    \declaretheorem[style=demo,name=Solución,numbered=no]{sol}

    % Break
    \declaretheorem[style=break,name=Teorema,sibling=lema]{teo*}

    % Breakthm
    \declaretheorem[style=breakthm,name=Teorema,sibling=lema]{teo}

    \@ifclassloaded{book}{%
        \AtBeginDocument{\renewcommand{\contentsname}{Contenidos}}
        \AtBeginDocument{\renewcommand{\chaptername}{Tema}}
    }{}
\fi
%    \end{macrocode}
%
% \iffalse
%</package>
% \fi
% \section{Class implementation}
% \iffalse
%<*class>
% \fi
% \subsection{Imports}
%    \begin{macrocode}
\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}
\RequirePackage{lmodern}
\RequirePackage{graphicx,physics}
%    \end{macrocode}
%
% \subsection{Language}
% The default language is english
%    \begin{macrocode}
\newcommand*{\@authortext}{Author}
\newcommand*{\@authorstext}{Authors}
\newcommand*{\@prauthortext}{Principal author}
\newcommand*{\@prauthorstext}{Principal authors}
\newcommand*{\@otherauthortext}{Other authors}
\newcommand*{\@reviewertext}{Reviewers}
\newcommand*{\@lastupdatetext}{Last update}
\newcommand*{\@titlemonth}{\ifcase \the\month \or January\or February\or March\or April\or May \or June\or July\or August\or September\or October\or November\or December\fi \: \number \year}
\newcommand*{\titlemonth}[1]{\gdef\@titlemonth{#1}}

\DeclareOption{spanish}{
    \renewcommand*{\languagename}{spanish}
    \renewcommand*{\@authortext}{Autor}
    \renewcommand*{\@authorstext}{Autores}
    \renewcommand*{\@prauthortext}{Autor principal}
    \renewcommand*{\@prauthorstext}{Autores principales}
    \renewcommand*{\@otherauthortext}{Otros autores}
    \renewcommand*{\@reviewertext}{Revisores}
    \renewcommand*{\@lastupdatetext}{\'Ultima modificaci\'on}
    \renewcommand*{\@titlemonth}{\ifcase \the\month \or Enero\or Febrero\or Marzo\or Abril\or Mayo \or Junio\or Julio\or Agosto\or Septiembre\or Octubre\or Noviembre\or Diciembre\fi \:  \number \year}
}

\DeclareOption{catalan}{
    \renewcommand*{\languagename}{catalan}
    \renewcommand*{\@authortext}{Autor}
    \renewcommand*{\@authorstext}{Autors}
    \renewcommand*{\@prauthortext}{Autor principal}
    \renewcommand*{\@prauthorstext}{Autors principals}
    \renewcommand*{\@otherauthortext}{Altres autors}
    \renewcommand*{\@reviewertext}{Revisors}
    \renewcommand*{\@lastupdatetext}{\'Ultima modificaci\'o}
    \renewcommand*{\@titlemonth}{\ifcase \the\month \or Gener\or Febrer\or Mar\c{c}\or Abril\or Maig \or Juny\or Juliol\or Agost\or Setembre\or Octubre\or Novembre\or Desembre\fi \:  \number \year}
}
%    \end{macrocode}
%
% \subsection{Metatadata}
% TODO creo que no funciona o algo así...
%    \begin{macrocode}
\newcommand*{\generatemetadata}{%
    \renewcommand*{\and}{ and }
    \hypersetup{
        pdfauthor={\@author}
    }
    \renewcommand*{\and}{ }
    \hypersetup{
        pdftitle={{\@title} -- ApuntsFME},
        pdfsubject={\@title},
        pdfkeywords={ApuntsFME},
    }
}
%    \end{macrocode}
%
% \subsection{Process options}
%    \begin{macrocode}
\ProcessOptions\relax
%    \end{macrocode}
%
% \subsection{Import class}
% Again we don't think making the whole thing from scratch was viable.
%    \begin{macrocode}
\LoadClass[12pt]{book}
%    \end{macrocode}
%
% \subsection{Title page}
% Here we create the title page, one of the strengths of this class
%
% \subsubsection{Last update}
%    \begin{macrocode}
\newif\if@lastupdate\@lastupdatetrue
\newcommand*{\nolastupdate}{\@lastupdatefalse}
%    \end{macrocode}
%
% \subsubsection{Authors}
%    \begin{macrocode}
\newcommand*{\@metaauthor}{}

\newcount\apuntsfme@numberauthor
\apuntsfme@numberauthor=0

\def\@author{}
\renewcommand*{\author}[1]{%
    \expandafter\gdef\csname apuntsfme@author\the\apuntsfme@numberauthor\endcsname{#1}%
    \advance\apuntsfme@numberauthor by1 %
}
%    \end{macrocode}
%
% \subsubsection{Other Authors}
%    \begin{macrocode}
\def\@otherauthor{}
\newcommand*{\otherauthor}[1]{%
    \ifx\@otherauthor\empty %
        \gdef\@otherauthor{#1}%
    \else%
        \expandafter\gdef\expandafter\@otherauthor\expandafter{\@otherauthor, #1}%
    \fi%
}
%    \end{macrocode}
%
% \subsubsection{Reviewers}
%    \begin{macrocode}
\def\@reviewer{}
\newcommand*{\reviewer}[1]{%
    \ifx\@reviewer\empty %
        \gdef\@reviewer{#1}%
    \else%
        \expandafter\gdef\expandafter\@reviewer\expandafter{\@reviewer, #1}%
    \fi%
}
%    \end{macrocode}
%
% \subsubsection{Subtitle}
%    \begin{macrocode}
\newcommand*{\subtitle}[1]{\gdef\@subtitle{#1}}
\newcommand*{\@subtitle}{}
%    \end{macrocode}
%
% \subsubsection{Thanks comment}
%    \begin{macrocode}
\newcommand*{\thankscomment}[1]{\gdef\@thankscomment{#1}}
\newcommand*{\@thankscomment}{}
%    \end{macrocode}
%
% \subsubsection{Title page}
% All of the previous sections are combined here were we actually make the title page.
% TODO remove doclicense
%    \begin{macrocode}
\renewcommand*{\maketitle}{%
\generatemetadata
\begin{titlepage}
    \centering\scshape%
    \vspace*{\fill}%
    \rule{\textwidth}{1.6pt}\vspace*{-\baselineskip}\vspace*{2pt} %
    \rule{\textwidth}{0.4pt} %

    \vspace{0.75\baselineskip}

    \renewcommand*{\and}{\protect\\}%
    {\LARGE \expandafter\MakeUppercase\expandafter{\@title}\\}

    \vspace{0.75\baselineskip}

    \rule{\textwidth}{0.4pt}\vspace*{-\baselineskip}\vspace{3.2pt} %
    \rule{\textwidth}{1.6pt} %

    \vspace{1.5\baselineskip}
    
    \@subtitle
    
    \vspace*{\fill}
    \vspace*{\fill}
    \vspace*{\fill}
    \vspace*{\fill}
    \vspace*{\fill}
    \vspace*{\fill}
    
    \includegraphics[width=5cm]{../logo.pdf}
    
    \vspace{0.3\baselineskip}
    
    Barcelona, \@titlemonth
\end{titlepage}

\vspace*{\fill}

\ifnum\apuntsfme@numberauthor=0%
\else%
    \ifx\@otherauthor\empty %
        \ifnum\apuntsfme@numberauthor=1%
            \noindent \@authortext: %
        \else%
            \noindent \@authorstext: %
        \fi%
    \else%
        \ifnum\apuntsfme@numberauthor=1%
            \noindent \@prauthortext: %
        \else%
            \noindent \@prauthorstext: %
        \fi%
    \fi
    \newcount\apuntsfme@tempauthor%
    \loop%
        \ifnum\apuntsfme@tempauthor=0 %
        \else%
            , %
        \fi%
        \csname apuntsfme@author\the\apuntsfme@tempauthor\endcsname%
    \advance\apuntsfme@tempauthor by 1 %
    \ifnum\apuntsfme@tempauthor < \apuntsfme@numberauthor%
    \repeat%
    .%
\fi
\ifx\@otherauthor\empty
\else

    \quad
    
    \noindent \@otherauthortext: \@otherauthor.
\fi
\ifx\@reviewer\empty
\else

    \quad
    
    \noindent \@reviewertext: \@reviewer.
\fi
\ifx\@thankscomment\empty
\else

    \quad
    
    \noindent \@thankscomment
\fi
\if@lastupdate

    \quad

    \noindent \@lastupdatetext: \@date.
\fi

\doclicenseThis
}
%    \end{macrocode}
%
% \subsection{Other commands}
%
% \begin{macro}{\makecover}
%    \begin{macrocode}
\newcommand*{\makecover}{
    \frontmatter
    \maketitle
    \tableofcontents
    \mainmatter
}
%    \end{macrocode}
% \end{macro}
%
% \subsection{Other includes}
% These packages need to be included last, so we place them here. TODO remove doclicense
%    \begin{macrocode}
\RequirePackage[a4paper,margin=1in]{geometry}
\RequirePackage{hyperref}
\RequirePackage[
    type={CC},
    modifier={by-nc-sa},
    version={4.0},
]{doclicense}
%    \end{macrocode}
%
% \subsection{Parche punt volat}

%Definició de la ela geminada per tal que accepti el punt volat del teclat
\def·#1{%
  \ifmmode
    \cdot #1
    %\csname normal@char\string"\endcsname l%
  \else%
    \def\argument{#1}%
    \if\argument l%
      \leftllkern=0pt\rightllkern=0pt\raiselldim=0pt%
      \setbox0\hbox{l}\setbox1\hbox{l\/}\setbox2\hbox{.}%
      \advance\raiselldim by \the\fontdimen5\the\font
      \advance\raiselldim by -\ht2%
      \leftllkern=-.5\wd0%
      \advance\leftllkern by \wd1%
      \advance\leftllkern by -\wd0%
      \rightllkern=-.5\wd0%
      \advance\rightllkern by -\wd1%
      \advance\rightllkern by \wd0%
      \allowhyphens\discretionary{-}{l}%
      {\hbox{}\kern\leftllkern\raise\raiselldim\hbox{.}%
        \kern\rightllkern\hbox{l}}\allowhyphens%
    \else
      \if\argument L%
        \leftllkern=0pt\rightllkern=0pt\raiselldim=0pt%
        \setbox0\hbox{L}\setbox1\hbox{L\/}\setbox2\hbox{.}%
        \advance\raiselldim by .5\ht0%
        \advance\raiselldim by -.5\ht2%
        \leftllkern=-.5\wd0%
        \advance\leftllkern by \wd1%
        \advance\leftllkern by -\wd0%
        \rightllkern=.375\wd0%
        \divide\rightllkern by 6%
        \advance\rightllkern by -\wd1%
        \advance\rightllkern by \wd0%
        \allowhyphens\discretionary{-}{L}%
        {\hbox{}\kern\leftllkern\raise\raiselldim\hbox{.}%
           \kern\rightllkern\hbox{L}}\allowhyphens%
      \else
        #1
      \fi
    \fi
  \fi
  } 

% \iffalse
%</class>
% \fi
