浏览代码

first version

Adrien Carteron 3 年之前
当前提交
4eac4e6b52
共有 26 个文件被更改,包括 3310 次插入0 次删除
  1. 13 0
      .gitignore
  2. 26 0
      LICENSE
  3. 501 0
      README-nl-NL.md
  4. 356 0
      README-zh-CN.md
  5. 482 0
      README.md
  6. 250 0
      cv.tex
  7. 443 0
      devicons.sty
  8. 787 0
      fortysecondscv.cls
  9. 70 0
      pics/flags/Hello.txt
  10. 7 0
      pics/flags/LICENSE.txt
  11. 二进制
      pics/flags/flat/CN.png
  12. 二进制
      pics/flags/flat/DE.png
  13. 二进制
      pics/flags/flat/FR.png
  14. 二进制
      pics/flags/flat/GB.png
  15. 二进制
      pics/flags/flat/NL.png
  16. 二进制
      pics/flags/shiny/CN.png
  17. 二进制
      pics/flags/shiny/DE.png
  18. 二进制
      pics/flags/shiny/FR.png
  19. 二进制
      pics/flags/shiny/GB.png
  20. 二进制
      pics/flags/shiny/NL.png
  21. 二进制
      pics/logo.png
  22. 二进制
      pics/logo_txt.png
  23. 二进制
      pics/profile.png
  24. 二进制
      pics/template-0.jpg
  25. 二进制
      pics/template-1.jpg
  26. 375 0
      template.tex

+ 13 - 0
.gitignore

@@ -0,0 +1,13 @@
+fonts/*
+tmp/*
+*pdf
+*gz
+*aux
+*latexmk
+*log
+*synctex*
+*fls
+*out
+test*
+README.html
+*~

+ 26 - 0
LICENSE

@@ -0,0 +1,26 @@
+Copyright © 2019 René Wirnata
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors
+may be used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 501 - 0
README-nl-NL.md

@@ -0,0 +1,501 @@
+Forty Seconds CV
+================
+
+[中文](README-zh-CN.md) | [English](README.md)
+
+## Omschrijving
+
+Gewoon een andere CV klasse voor LaTeX - maar deze keer zeer aanpasbaar!
+
+Dit project kan worden beschouwd als een bijna volledige herschrijving van de
+oorspronkelijke twentysecondcv klasse. Het is niet bedoeld om een nieuwe
+cv-stijl aan te bieden die je nergens anders kunt vinden, maar neemt juist een
+zeer gevestigde stijl en voegt een duidelijke gebruikersinterface toe aan bijna
+alle lay-outelementen en maakt daarmee een zeer aanpasbare framework-klasse:
+FortySecondsCV.
+
+Probeer het gewoon zelf, beginnend vanaf `template.tex`!
+
+Wanneer zou je twentysecondcv of altacv of een andere LaTeX CV klasse moeten
+gebruiken:
+
+* Je bent tevreden met de lay-outelementen die worden aangeboden door de
+  bestaande CV-stijlen
+* Je hoeft het afdrukformaat niet aan te passen
+* Je wilt je CV-stijl verder niet aanpassen
+
+Wanneer zou je de FortySecondsCV klasse moeten gebruiken:
+
+* Je bouwt graag een CV op dat is geoptimaliseerd voor 2 pagina's incl. een
+  zijbalk (met de optie voor extra pagina's)
+* Je wilt je CV in hoge mate aanpassen met een groot kleurenpalet en
+  layout-elementen
+* Je wilt geen enkele definitie in het klassenbestand wijzigen
+* Je geeft de voorkeur aan een eenvoudig te gebruiken gebruikersinterface voor
+  bijna alle stijlelementen
+* Je hebt een netjes geschreven klassenbestand nodig voor het geval je toch
+  besluit om low-level klasse definities te veranderen
+
+
+## Attributies
+
+* Deze LaTeX CV-klasse is gebaseerd op de stijlideeën van de
+  [twentysecondscv class](https://github.com/spagnuolocarmine/TwentySecondsCurriculumVitae-LaTex)
+  door Carmine Spagnuolo
+* Pictogrammen voor talen in de template zijn afkomstig uit [de repository van gosquared](https://github.com/gosquared/flags)
+
+
+## Benodigdheden
+
+Je moet het document compileren met XeLaTeX of LuaLaTeX om de nieuwste Font
+Awesome-pictogrammen (`fontawesome5`) en Academicons te kunnen gebruiken. Als je
+alsnog wilt compileren met pdfLaTeX om welke reden dan ook, ~~zal FortySecondsCV
+terug vallen naar het oudere pictogrampakket (`fontawesome`), waar sommige
+pictogrammen er anders uit zien en anderen niet eens zijn inbegrepen~~ zal
+Academicons niet beschikbaar zijn.
+
+
+## Licentie
+
+Forty Seconds CV is uitgebracht onder de BSD 3-clausule licentie. Zie het
+LICENSE bestand voor meer informatie.
+
+
+## Gebruikersinterface
+
+### Klasse-opties
+
+De mogelijke opties die kunnen worden doorgegeven aan FortySecondsCV zijn:
+
+* alle geldige opties voor de standaard artikelklasse zoals bijv. `a4paper` of
+  `11pt`.
+* `sidesectionsize` stelt de lettergrootte van sectie titels in de zijbalk in op
+  `\large`, `\huge`, etc., wanneer deze optie wordt ingesteld op `large`,
+  `huge`, etc. (d.w.z. zonder de backslash er voor)
+* `showframes` toont randen rond de zijbalk en de teksten in het hoofddocument
+  wat kan helpen om de marges correct aan te passen. Let wel op dat hierdoor de
+  inhoud van tabellen wat wordt verplaatst omdat de lijnen ook wat ruimte
+  innemen.
+* `vline=<lengte>` tekent een rode verticale lijn op x-positie `<length>` om te
+  helpen de inhoud van de zijbalk aan te passen.
+* `maincolor=<kleur>` stelt de themakleur in die wordt gebruikt voor de gehele
+  zijbalk incl. koppen, pictogrammen, en grafieken. Veel kleuren worden van deze
+  afgeleid.
+* `sidecolor=<kleur>` stelt de achtergrondkleur van de zijbalk in.
+* `sidetextcolor=<kleur>` stelt de kleur van de tekst in de zijbalk in.
+* `sectioncolor=<kleur>` stelt de kleur van sectiekoppen in de hoofdtekst in.
+* `itemtextcolor=<kleur>` stelt de kleur van cvitem beschrijvingen in.
+* `subsectioncolor=<kleur>` hetzelfde als sectioncolor, voor subsecties.
+* `sidebarwidth=<lengte>` stelt de totale breedte van de zijbalk in, d.w.z. de
+  breedte van de zichtbare zijbalkkleur.
+* `topbottommargin=<lengte>` stelt de boven- en onderpaginamarge in voor beide
+  kolommen.
+* `leftrightmargin=<lengte>` stelt de linker- en rechterpaginamarge in voor
+  beide kolommen en tevens hoeveel ruimte er tussen de beide kolommen zal zijn.
+* `profilepicsize=<lengte>` stelt de breedte van de profielfoto in.
+* `profilepicborderwidth=<lengte>` stelt de breedte in van de rand van de
+  profielfoto.
+* `profilepicstyle=profilecircle` toont de profielfoto in een cirkel zoals in
+  de originele `twentysecondcv` klasse.
+* `profilepiczoom=<float>` stelt de zoomfactor voor de profielfoto in. Samen met
+  de twee onderstaande opties kun je jouw favoriete profielfoto direct zonder
+  wijziging hier gebruiken en hier bijsnijden.
+* `profilepicxshift=<lengte>` stelt de xshift voor de profielfoto in.
+* `profilepicyshift=<lengte>` stelt de yshift voor de profielfoto in.
+* `profilepicrounding=<lengte>` stelt de afrondingsradius in voor de rechter
+  bovenhoek en de linker benedenhoek voor de standaard afgeronde
+  profielfotostijl.
+* `sidebarplacement=right` verplaatst de zijbalk naar de rechterkant van het
+  document in plaats van links.
+
+Let op:
+
+* Lengtes kunnen worden opgegeven in elke absolute lengte-eenheid, bijv. `em`
+  voor breedtes, `ex` voor hoogtes, of relatieve waarden zoals`0.5\paperheight`
+  of `0.3\linewidth`.
+* Kleuren kunnen worden gekozen uit de volledige catalogus verzorgd door de
+  `dvipsnames`, `svgnames`, en` x11names` opties van het `xcolor` pakket. Zie de
+  [xcolor pakket documentatie](http://mirrors.ctan.org/macros/latex/contrib/xcolor/xcolor.pdf)
+  voor meer informatie en kleurentabellen.
+* Kleuren kunnen ook opnieuw worden gedefinieerd binnen de documenttekst met
+  bijv. `\definecolor{sidecolor}{HTML}{000000}`.
+
+### Zijbalk
+
+De zijbalken aan de voor- en achterkant van het CV worden gegenereerd met behulp
+van de commando's `\makefrontsidebar` en`\makebacksidebar` binnen het `document`
+gedeelte van de LaTeX code. Het wordt aanbevolen om `\newpage` onmiddellijk vóór
+`\makebacksidebar` te gebruiken.
+
+Lay-outelementen in de zijbalk aan de voor- en achterkant kunnen worden
+toegevoegd met
+```latex
+\addtofrontsidebar{}
+\addtobacksidebar{}
+```
+met enkele vooraf gedefinieerde elementen zoals profielfoto, naam en functie
+titel al ingesteld, of definieer ze volledig opnieuw met
+```latex
+\renewcommand{\makefrontsidebar}{%
+  \begin{sidebar}
+    <jouw code>
+  \end{sidebar}
+}
+```
+Je kunt alle eerder gedefinieerde macro's gebruiken zoals `\cvname` en
+`\cvjobtitle` of andere elementen zoals de icontable
+[hier](#persoonlijke-informatie) uitgelegd.
+Zie [#22](https://github.com/PandaScience/FortySecondsCV/issues/22) voor een
+meer gedetailleerd voorbeeld.
+
+De `sidebar`-omgeving zorgt ervoor dat in ieder geval alle tekst correct wordt
+gepositioneerd in de linkerkolom (zijbalk) van elke pagina. Als je iets
+beperkters nodig hebt, bijv. om overloop te voorkomen bij gebruik van meerdere
+diagramlabels, kun je delen van de zijbalkinhoud insluiten in een
+`sidebarminipage`:
+```latex
+\begin{sidebarminipage}
+  \chartlabel{Bubble Diagram}
+  \chartlabel{met}
+  \chartlabel{juiste}
+  \chartlabel{overflow}
+  \chartlabel{bescherming}
+  \chartlabel{voor}
+  \chartlabel{labels}
+\end{sidebarminipage}
+```
+Met behulp van de `sidebar`-omgeving kun je ook makkelijk meer sidebar
+definities toevoegen voor extra pagina's. Als je wilt dat de zijbalk in plaats
+van de linkerkant, aan de rechterkant van de pagina verschijnt, gebruik dan de
+klasse-optie `sidebarplacement=right`.
+
+Als je de zijbalk volledig wilt verwijderen op een enkele pagina, roep dan
+simpelweg de zijbalk constructors niet aan. Vervolgens kun je de gewenste marges
+instellen met
+```latex
+\newpage
+% geen \makebacksidebar enz.
+\newgeometry{
+  top=<lengte>,
+  bottom=<lengte>,
+  left=<lengte>,
+  right=<lengte>
+}
+```
+De standaardinstellingen zijn `\leftrightmargin` en `\topbottommargin`. Voor het
+geval je op de volgende pagina's weer wilt terugkeren naar de standaard layout,
+hoef je alleen maar `\restoregeometry` aan te roepen na de volgende `\newpage`.
+
+De tekstkleur van sidebar elementen kan worden aangepast via de klasse-optie
+`sidetextcolor`. Voor zwaardere stijlwijzigingen kun je ook het `\sidetext`
+commando aanpassen aan je behoeften. Bijvoorbeeld:
+```latex
+  \renewcommand{\sidetext}[1]{\textcolor{red}{\texttt{#1}}}
+```
+
+### Persoonlijke informatie
+
+Stel persoonlijke informatie in via handige functies:
+```latex
+  % logo afbeelding
+  \cvlogopic[0.8\linewidth]{pics/logo.png}
+  % profielfoto
+  \cvprofilepic{pics/profile.png}
+  % uw naam
+  \cvname{Panda Bear}
+  % functietitel
+  \cvjobtitle{Panda Scientist,\\[0.2em] Panda of the Year}
+  % geboortedatum
+  \cvbirthday{Mar 7, 2019}
+  % kort adres / locatie, gebruik \newline als er meer dan 1 regel nodig is
+  \cvaddress{Park Ave.~1, 555 555 B-Woods}
+  % telefoonnummer
+  \cvphone{+86 555 555 555}
+  % persoonlijke website
+  \cvsite{https://pandascience.net}
+  % e-mailadres
+  \cvmail{panda@bamboo.cn}
+  % pgp sleutel
+  \cvkey{4096R/FF00FF00}{0xAABBCCDDFF00FF00}
+  % elk ander custom item
+  \cvcustomdata{\faFlag}{Chinese}
+```
+* Alleen `\cvname` en `\cvjobtitle` zijn verplicht.
+* Als je wilt dat een (optioneel) item niet in je CV verschijnt, gebruik het dan
+  simpelweg niet. Als je geen van deze handige commando's gebruikt, zal de
+  tabel met persoonlijke informatie helemaal niet verschijnen.
+* Het e-mailadres wordt automatisch gekoppeld aan `mailto:email`.
+* Er wordt ook een hyperlink naar je website gemaakt.
+* Voor de pgp-sleutel definieert het eerste argument de weergegeven tekst,
+  die gekoppeld is aan een keyserver die zoekt naar de ID in het tweede
+  argument.<br>
+  Let op: Om veiligheidsredenen dien je de lange ID van je sleutel of de
+  vingerafdruk in het tweede argument te gebruiken.
+* De macro `\cvcustom{<pictogram>}{<tekst>}` laat zien hoe je nieuwe regels
+  definieert met een pictogram als eerste, en wat tekst als tweede argument.
+  Achter de schermen is dit commando eigenlijk gebruikt om de andere commando's
+  in het bovenstaande voorbeeld te definiëren.
+
+Als je de standaardstijl van de "persoonlijke informatietabel" niet mooi vindt,
+kan je jouw eigen tabel definiëren met
+```latex
+\begin{icontable}[<arraystretch=1>]{<breedte 1st column>}{<ruimte tussen kolommen>}
+  \personal{<pictogram>}{<tekst>}
+  \social{<pictogram>}{<URL>}{<tekst>}
+\end{icontable}
+```
+waarbij de breedte van de 1e kolom ook de grootte van alle pictogrammen in die
+kolom bepaalt, aangezien pictogrammen worden geschaald naar de maximale breedte
+van hun cel. Voor visuele doeleinden kun je de ruimte tussen de pictogrammen en
+de bijbehorende tekst bepalen met het 2e verplichte argument. Het optionele
+argument bepaalt de afstand tussen de tabel regels, wat alleen belangrijk is
+voor kleine pictogramhoogtes (d.w.z. kleine 1e kolommen).
+
+* `\personal` accepteert een pictogram en een tekst. Het pictogram wordt
+  doorgegeven aan `\circleicon{<pictogram>}`, die een cirkel tekent die is
+  gevuld met `maincolor` rondom het pictogram. Het pictogram zelf wordt wit
+  weergegeven.
+* `\social` accepteert een pictogram en een URL + tekst. `Tekst` wordt als label
+  weergegeven van een hyperlink naar `URL`.
+  In het geval dat `URL` leeg is, zal uw LaTeX-compiler een onschuldige
+  waarschuwing geven over "Suppressing link with empty target" en de tekst zal
+  worden weergegeven zonder link. Het pictogram zelf wordt doorgegeven aan
+  `\socialicon{<pictogram>}`, dat simpelweg de grootte wijzigt van pictogram en
+  het tekent in `maincolor`. Deze versie heeft de voorkeur voor de pictogrammen
+  van sociale netwerken (zie voorbeeld).
+
+De standaard "persoonlijke informatietabel" gebruikt
+```latex
+\begin{icontable}[1.6]{1.7em}{0.4em}
+  \personal{<pictogram>}{<tekst>}
+\end{icontable}
+```
+
+### Andere stijlelementen in de zijbalk
+
+* Sectie kop tekst
+  ```latex
+  \profilesection{<sectie kop tekst>}
+  ```
+
+* Eenvoudige vaardigheid met alleen een pictogram en wat tekst en met optionele
+  inspringing
+  ```latex
+  \skill[<inspringing>]{<pictogram>}{<tekst>}
+  ```
+
+* Vaardigheid uitgedrukt in punten, bestaande uit een icoon, tekst, het aantal
+  punten en optioneel het maximaal mogelijke aantal punten (standaard: 5).
+  Een paar voorbeelden:
+  ```latex
+  \pointskill{<pictogram>}{<tekst>}{<punten>}
+  ```
+  maakt een vaardigheid met behulp van een Font Awesome- of Academicons
+  pictogram met wat tekst en een ranking van `<punten>` van de 5 punten.
+  ```latex
+  \pointskill{<pictogram>}{<tekst>}{<punten>}[<maximum>]
+  ```
+  maakt een vaardigheid met behulp van een Font Awesome- of Academicons
+  pictogram met wat tekst en een ranking van `<punten>` uit `<maximum>`
+  mogelijke punten.
+  ```latex
+  \pointskill{\flag{DE.png}}{Duits}{5}
+  ```
+  creëert een taalvaardigheid met behulp van een vlagpictogram, dat moet worden
+  aangegeven met het `\flag` commando om de klasse te informeren dat het
+  pictogram niet gekleurd moet worden in `\maincolor`.
+
+* Vaardigheid uitgedrukt in een balk, bestaande uit een pictogram, tekst en
+  percentage van hoe ver de vaardigheidsbalk moet worden gevuld
+  ```latex
+  \barskill{<pictogram>}{<tekst>}{<percentage>}
+  ```
+
+* "Over mij" tekst
+  ```latex
+  \aboutme{<tekst over meerdere regels>}
+  ```
+
+* Afgerond en gekleurd label voor bijv. grafieken en andere afbeeldingen
+  ```latex
+  \chartlabel{<tekst>}
+  ```
+
+* Wiel diagram
+  ```latex
+  \wheelchart{<buitenste straal>}{<binnenste straal>}{%
+    <percentage>/<afstand>/<kleur>/<tekst>,
+    <percentage>/<afstand>/<kleur>/<tekst>
+  }
+  ```
+  * Percentages moeten samen uitkomen op 100
+
+* Lidmaatschappen
+  ```latex
+  \begin{memberships}[<afstand>=1em]
+    \membership[<pictogrambreedte>=4em]{<logo>}{<tekst>}
+    \membership[<pictogrambreedte>=4em]{<logo>}{<tekst>}
+    \membership[<pictogrambreedte>=4em]{<logo>}{<tekst>}
+  \end{memberships}
+  ```
+  * De breedte van de 1e kolom met de pictogrammen is gelijk aan de breedte van
+    de grootste pictogram zodat alle tekst in de 2e kolom uitgelijnd is.
+
+* Sociale netwerken
+  ```latex
+  \begin{socialnetwork}[<afstand>=1em]
+    \social{<pictogram>}{<URL>}{<tekst>}
+    \social{<pictogram>}{<URL>}{<tekst>}
+    \social{<pictogram>}{<URL>}{<tekst>}
+  \end{socialnetwork}
+  ```
+  * Een andere pictogramstijl die gebruikt kan worden voor bijv. sociale
+    netwerk pictogrammen van Academicons, maar die ook werkt voor FontAwesome
+    pictogrammen.
+  * `tekst` wordt de label van een link naar `URL`.
+  * `tekst` kan zoals gewoonlijk worden opgemaakt via bijv. `\texttt{}` enz.
+
+### Hoofdtekst
+
+De rechterkolom van de CV met tabellen voor iets als "werkervaring" moet
+gedefinieerd worden binnen de `document` omgeving.
+
+* Sectie- en subsectie koppen
+  ```latex
+  \cvsection
+  \cvsubsection
+  ```
+
+* CV-items moeten binnen `cvtable` worden geplaatst, onafhankelijk van het type.
+  De mogelijkheden zijn:
+  ```latex
+  \begin{cvtable}[<arraystretch>=1]
+    \cvitem{<data>}{<titel>}{<locatie>}{<omschrijving>}
+    \cvitem{<data>}{<titel>}{<locatie>}{}
+    \cvitemshort{<key>}{<omschrijving>}
+    \cvpubitem{<titel>}{<auteur>}{<tijdschrift>}{<jaar>}
+  \end{cvtable}
+  ```
+  * `cvitem` inclusief een omschrijving zal de titel vetgedrukt maken, de datum
+    of data links uitlijnen, de locatie rechts uitlijnen en de omschrijving
+    ingesprongen op de volgende regel zetten. De beschrijving zelf zal in
+    `itemtextcolor` staan, zoals gedefinieerd in de
+    [klasse opties](#klasse-opties).
+  * Als `cvitem` een beschrijving mist, wordt er een item van één regel
+    toegevoegd in de stijl hierboven omschreven, maar met een "normale" titel in
+    plaats van vetgedrukt.
+  * `cvitemshort` lijnt `<key>` linkt uit, gevolgd door de omschrijving.
+  * `cvpubitem` voegt een item toe met links uitgelijnd jaar/datum, vetgedrukte
+    titel op dezelfde regel, gevolgd door een cursieve gedrukte auteur naam, en
+    normaal gedrukte tijdschrift, elk op een afzonderlijke regel.
+  * `<arraystretch>` wijzigt de afstand tussen de items van `cvtable`. Voor
+     tabellen van `cvitem` moet je minimaal 1.5 gebruiken, voor` cvitemshort` en
+     `cvitem` zonder omschrijving is de standaardwaarde voldoende.
+
+* Kleuren
+  `cvsection`, `cvsubsection` en de tekst kleur van omschrijvingen kunnen
+  worden gedefinieerd zoals omschreven in de [klasse opties](#klasse-opties).
+
+* De combinatie van naam en functietitel met de juiste spatiëring, lettertype en
+  kleur
+  ```latex
+  \nameandjob
+  ```
+
+* Het afronden van de CV met een plaats, datum en handtekening, zoals
+  gebruikelijk in bijv. Duitsland wordt gedaan via
+  ```latex
+  \cvsignature
+  ```
+
+### Configuratie van het lettertype
+
+* Wijzig het standaardlettertype door het bijbehorende pakket te laden, bijv.
+  voor google noto
+  ```latex
+  \usepackage[sfdefault]{noto} % gebruik het google noto lettertype
+  ```
+  of door de optie van XeLaTeX te gebruiken om lokale lettertypen rechtstreeks
+  in te laden via fontspec
+  ```latex
+  \usepackage[quiet]{fontspec}
+  \newfontfamily\headingfont[Path = fonts/]{segoeuib.ttf}
+  ```
+
+* Voor meertalige documenten, raad ik het gebruik van van pdfLaTeX ten zeerste
+  af. Omdat ik maar weinig ervaring heb met LuaLaTeX (maar ik zal waarschijnlijk
+  wel binnenkort hiernaar overschakelen), kan ik voor nu alleen instructies
+  geven voor XeLaTeX. Daar moet je eerst het `polyglossia` pakket inladen en
+  vervolgens lettertypen instellen voor elke taal afzonderlijk. Voor documenten
+  met Latijns schrift met bijv. enkele Arabische tekstfragmenten, gebruik dan
+  ```latex
+  \usepackage{polyglossia}
+  \newfontfamily\arabicfont[Script=Arabic]{Amiri}
+  \setdefaultlanguage{english}
+  \setotherlanguage{arabic}
+  % zet Arabische fragmenten in de hoofdtekst met één van
+  \textarabic{...}
+  \begin{Arabic}...\end{Arabic}
+  ```
+  terwijl u voor documenten met een niet-Latijns schrift iets kunt gebruiken als
+  ```latex
+  \usepackage{polyglossia}
+  \setmainfont{Amiri}
+  \newfontfamily\englishfont{Clear Sans}
+  \setdefaultlanguage{arabic}
+  \setotherlanguage{english}
+  % zet Engelse fragmenten in de hoofdtekst met één van
+  \textenglish{...}
+  \begin{english}...\end{english}
+  ```
+  Voor Perzische talen (Farsi) zou het volgende moeten werken volgens
+  [dit antwoord](https://tex.stackexchange.com/a/238245):
+  ```latex
+  \newfontfamily\farsifont[Script=Arabic,Scale=10,Contextuals=Swash]{IranNastaliq}
+  ```
+  Afhankelijk van welk lettertypestijl jouw standaard is, moet je
+  `\arabicfontfs` (sans serif) gebruiken, of `\arabicfonttt` (monospace), in
+  plaats van `\arabicfont`.
+
+  OPMERKING: Als je een RTL-lettertype instelt als hoofdlettertype, worden ook
+  andere delen van het CV automatisch omgedraaid. Hoewel dit voor de meeste
+  onderdelen geen probleem lijkt te zijn voor zover ik kan zien (ik ben helemaal
+  niet gewend aan RTL), breekt het wel een deel van de vaardigheid commando's,
+  met name `\pointskill` en `\membership`, en leidt het tot enige problemen met
+  de afstanden. Hoe dan ook, voor RTL wil je ook waarschijnlijk de
+  `sidebarplacement=right` optie gebruiken.
+
+* TODO: LuaLaTeX + babel-instellingen
+
+* Je moet lettertypen zoals Amiri en Clear Sans handmatig installeren wanneer
+  je ze via fontspec inlaadt. Dit is niet nodig voor documenten in één taal
+  waar je eenvoudig van lettertype kunt wisselen, zoals in het eerste voorbeeld,
+  door de respectievelijke LaTeX-pakketten te gebruiken.
+
+* Als je op zoek bent naar een specifiek pictogram, bijvoorbeeld LinkedIn, moet
+  je eerst in de [FontAwesome galerij](https://fontawesome.com/icons?d=gallery)
+  naar de naam zoeken, bijv. `linkedin-in`, en vervolgens de bijbehorende
+  LaTeX-code opzoeken in het
+  [fontawesome5 pakket](https://ftp.gwdg.de/pub/ctan/fonts/fontawesome5/doc/fontawesome5.pdf),
+  in dit geval '\faLinkedinIn'.
+
+* Als je de regelafstand globaal wilt vergroten, gebruik je
+  ```latex
+  \usepackage{setspace}
+  \setstretch{1.1}
+  ```
+  in plaats van de `arraystretch` modifier. Merk op dat dit ook van invloed is
+  op de inhoud van de zijbalk.
+
+* Als je de grootte van het basis lettertype wilt wijzigen, gebruik de opties
+  van de 'artikel' klasse zoals `12pt`, voor alle elementen in het hoofd
+  document en de paragrafen in de zijbalk. Koppen in de zijbalk kunnen worden
+  aangepast via de `sidesectionsize` [klasse optie](#klasse-opties). Voor de
+  lettergrootte van naam en functietitel moet je respectievelijke commando's
+  opnieuw definiëren, zoals [hier](#zijbalk) uitgelegd.
+
+
+## Voorbeeld
+
+![](pics/template-0.jpg)
+![](pics/template-1.jpg)

+ 356 - 0
README-zh-CN.md

@@ -0,0 +1,356 @@
+四十秒简历 Forty Seconds CV
+================
+
+[English](README.md) | [Nederlands](README-nl-NL.md)
+
+## 简介 Description
+
+只是另一个 LaTeX 简历模板——但是这一次高度可定制!
+
+这个项目可以被视为对原始的 twentysecondcv 类的改写。它的目标不在于提供全新的简历样式,而是基于一个已发布的优秀模板,添加直接的用户界面,并使其高度可定制的框架类: FortySecondsCV.
+
+从 `template.tex` 开始自己尝试一下吧!
+
+什么情况下您应该使用 twentysecondcv 或 altacv 或任何其他 LaTeX 类文件模板:
+
+* 您对现有简历类样式提供的布局元素感到满意
+* 您不需要改变纸张大小或格式
+* 您不想进一步定制您的简历
+
+什么情况下您应该使用 FortySecondsCV:
+
+* 您想构建一个2页的简历,包括侧边栏
+* 您想使用多种颜色和布局元素来高度自定义简历
+* 您不想修改类文件中的任何定义
+* 您更喜欢易于使用的用户界面,包括所有样式元素
+* 您需要一个编写清晰的类文件,以防您决定更改低级文件类定义
+
+## Attributions
+
+* 此 LaTeX 简历的风格创意基于 Carmine Spagnuolo 的 [twentysecondscv class](https://github.com/spagnuolocarmine/TwentySecondsCurriculumVitae-LaTex)
+* 模板中的语言图标取自 [gosquared's repository](https://github.com/gosquared/flags)
+
+## 要求 Requirements
+
+您需要使用 XeLaTeX 或 LuaLaTeX 编译文档,以便具有最新的 Font Awesome 图标(`fontawesome5`)和 Academicons。 如果您出于任何原因仍然想要使用 pdfLaTeX 进行编译,~~FortySecondsCV 将会回到较旧的图标包(`fontawesome`),其中一些图标看起来不同,甚至不包括一些其他图标~~ 学术论文将会不可用。
+
+## 许可证 License
+
+Forty Seconds CV 根据 BSD 3-Clause license 许可发行。详见 LICENSE 文件。
+
+## 用户界面 User Interface
+
+### 类选项 Class options
+
+能够传递给 FortySecondsCV 的可用选项包括:
+
+* 标准文章类别的所有有效选项,例如 `a4paper` 或 `11pt`。
+* `sidesectionsize` 设置侧边栏部分标题的字体大小。使用设置 `large`,`huge`将其设置为 `\large`,`\huge` 等(即不带斜杠 `\`)
+* `showframes `显示侧边栏和正文文本的边框,用以帮助调整边距。注意,这将轻微移动表中的内容,因为表格线也占据一定空间。
+* `vline = <length> `在 x=`<length>` 位置绘制一条红色垂直线以帮助调整侧边栏内容。
+* `maincolor = <color> `设置用于整个侧边栏的主题颜色,包括标题,图标和图表。许多颜色都源于此。
+* `sidecolor = <color>` 设置侧边栏的背景色。
+* `sidetextcolor = <color>` 设置位于侧边栏中的文本的颜色。
+* `sectioncolor = <color>` 设置正文中各节(section)标题的颜色。
+* `subsectioncolor = <color>` 小节(subsection)的颜色,与节的颜色相同。
+* `itemtextcolor = <color>` 设置 cvitem 的颜色。
+* `sidebarwidth = <length>` 设置侧边栏的总宽度,即可见边栏颜色的宽度。
+* `topbottommargin = <length>` 设置侧边栏和主体的上下页边距。
+* `leftrightmargin = <length>` 设置侧边栏和主体的左右页边距以及两列之间的距离。
+* `profilepicsize = <length>` 设置个人资料图片的宽度。
+* `profilepicborderwidth = <length>` 设置个人资料图片边框的宽度。
+* `profilepicstyle = profilecircle` 将个人资料图片剪切为和原始 `twentysecondcv`  一样的圆圈形状
+* `profilepiczoom = <float>` 设置个人资料图片的缩放系数。
+  结合下面的两个选项,您可以直接使用自己喜欢的个人资料图片,无需修改和裁剪。 
+* `profilepicxshift = <length>`  设置个人资料图片的左右偏移(xshift)。
+* `profilepicyshift = <length>`  设置个人资料图片的上下偏移(yshift)。
+* `profilepicrounding = <length>`  设置默认个人资料图片样式的圆角半径。
+* `sidebarplacement = right` 将侧边栏置于主体的右侧,而非左侧。
+
+注意:
+
+* 长度可以以任何绝对长度单位指定,例如用 `em` 表示宽度,用 `ex` 表示高度或相对高度,也可以使用 `0.5\paperheight` 或 `0.3\linewidth`。
+* 颜色可以从 `xcolor` 软件包的 `dvipsnames`,`svgnames` 和 `x11names` 供的完整目录中进行选择。前往 [xcolor package documentation](http://mirrors.ctan.org/macros/latex/contrib/xcolor/xcolor.pdf) 查看详细信息和颜色表。
+* 颜色也可以使用以下方式在文档正文中重新定义,例如使用 `\definecolor{sidecolor}{HTML}{000000}`。
+
+### 侧边栏 Sidebar
+
+简历正面和背面的侧边栏可以在 LaTeX 代码的  `document`  部分中使用 `\ makefrontsidebar` 和 `\ makebacksidebar` 命令生成。建议在 `\ makebacksidebar` 紧邻的前一行使用 `\newpage`。
+
+可以使用以下方法添加前侧边栏和后侧栏中的布局元素
+```latex
+\addtofrontsidebar{}
+\addtobacksidebar{}
+```
+其中,一些元素(如个人资料图片,姓名和职务)有预定义,您可以使用下面的命令来重新定义它们
+```latex
+\renewcommand{\makefrontsidebar}{%
+  \begin{sidebar}
+    <your code>
+  \end{sidebar}
+}
+```
+您可以使用所有先前定义的宏,例如 `\cvname` 和 `\cvjobtitle` 或其他元素,例如 [此处](#个人信息-personal-information) 绍的符号表。更详细的示例请参见 [#22][i22]。
+
+[i22]: https://github.com/PandaScience/FortySecondsCV/issues/22
+
+`sidebar` 环境可以确保至少所有文本都将正确放置在每个页面的左列(侧边栏)内。如果您需要更严格的限制,例如为了防止在使用多个图表标签时发生溢出,可以将侧边栏内容的一部分包含在 `sidebarminipage` 中:
+```latex
+\begin{sidebarminipage}
+  \chartlabel{Bubble Diagram}
+  \chartlabel{with}
+  \chartlabel{proper}
+  \chartlabel{overflow}
+  \chartlabel{protection}
+  \chartlabel{for}
+  \chartlabel{labels}
+\end{sidebarminipage}
+```
+使用 `sidebar` 环境时,您还可以轻松地为其添加更多侧边栏定义。如果希望边栏显示在主体的右侧而不是左侧,请使用类选项 `sidebarplacement=right`。
+
+如果要在单个页面上完全删除侧边栏,不调用任何侧边栏构造函数即可。然后,您可以使用以下命令设置您喜好的页边距:
+```latex
+\newpage
+% no \makebacksidebar etc.
+\newgeometry{
+  top=<length>,
+  bottom=<length>,
+  left=<length>,
+  right=<length>
+}
+```
+默认的页边距参数为 `\leftrightmargin` 和 `\topbottommargin`。如果您想在随后的页面回到默认页面布局,只需在下一个 `\newpage` 之后使用 `\restoregeometry`。
+
+侧边栏元素的文本颜色可以通过 `sidetextcolor` 选项进行调整。如果想要更深层的样式更改,您可以重新定义 `\sidetext` 命令,例如:
+```latex
+  \renewcommand{\sidetext}[1]{\textcolor{red}{\texttt{#1}}}
+```
+
+### 个人信息 Personal Information
+
+通过便捷命令设置个人信息
+```latex
+  % logo picture - logo图片
+  \cvlogopic[0.8\linewidth]{pics/logo.png}
+  % profile picture - 个人资料图片
+  \cvprofilepic{pics/profile.png}
+  % your name - 您的姓名
+  \cvname{Panda Bear}
+  % job title/career - 职位/职业
+  \cvjobtitle{Panda Scientist,\\[0.2em] Panda of the Year}
+  % date of birth - 出生日期
+  \cvbirthday{Mar 7, 2019}
+  % short address/location, use \newline if more than 1 line is required - 短地址,如果不止一行请使用\newline
+  \cvaddress{Park Ave.~1, 555 555 B-Woods}
+  % phone number - 电话
+  \cvphone{+86 555 555 555}
+  % personal website - 个人网站
+  \cvsite{https://pandascience.net}
+  % email address - 电子邮箱
+  \cvmail{panda@bamboo.cn}
+  % pgp key
+  \cvkey{4096R/FF00FF00}{0xAABBCCDDFF00FF00}
+  % any other custom entry - 其他任意条目
+  \cvcustomdata{\faFlag}{Chinese}
+```
+* 只有 `\cvname` 和 `\cvjobtitle` 是必填的。
+* 如果您不希望任何(可选)条目出现在您的简历中,不填写它们即可。如果您不使用任何以上便捷命令,那么整个个人信息表将不会出现。
+* 电子邮件地址将自动添加 `mailto:email`。
+* 您的网站也将被添加超链接
+* For the pgp key, the first argument defines the displayed text which is linked to a keyserver searching for the ID in the second argument.
+Note: For safety, you should use your key's long ID or its fingerprint in the second argument.
+* `\cvcustom{<icon>}{<text>}` 巨集(macro) 显示了如何使用图标作为第一个参数以及一些文本作为第二个参数来定义新行。在这个场景背后,该命令实际上用于定义以上示例中的其他便捷命令。
+
+如果您不喜欢“个人信息表”的默认样式,则可以通过以下方式定义自己的样式:
+```latex
+\begin{icontable}[<arraystretch=1>]{<width 1st column>}{<space between columns>}
+  \personal{<icon>}{<text>}
+  \social{<icon>}{<url>}{<text>}
+\end{icontable}
+```
+其中第一列的宽度也将确定此列中所有图标的大小,因为图标已缩放到其单元格的最大宽度。出于视觉目的,您可以使用第二个必填参数微调图标和相应文本之间的间距。可选参数确定表格行之间的间距,这仅对于较小的图标高度(即较小的第一列)很重要。
+
+* `\personal` 需要一个图标和一个文本。 该图标将传递到`\circleicon{<icon>}`,该命令在图标符号周围绘制一个填充有颜色为`maincolor`的圆圈。符号本身显示为白色。
+
+* `\social` 需要一个图标和 url +文本。`Text` 将被超链接到 `url`。如果 `url` 为空,您的 LaTeX 编译器将发出关于“禁止目标为空的链接”的无害警告,并且文本不会超链接。图标本身会传递到 `\socialicon{<icon>}`,后者会调整图标符号的大小并以颜色 `maincolor` 绘制它。此版本是社交网络图标的首选版本(请参见示例)。
+
+默认的“个人信息表”使用
+```latex
+\begin{icontable}[1.6]{1.7em}{0.4em}
+  \personal{<icon>}{<text>}
+\end{icontable}
+```
+
+
+### 其他侧边栏样式元素 Further Sidebar Style Elements
+
+* 节标题(Section heading)
+  ```latex
+  \profilesection{<section title>}
+  ```
+
+* 简单技能(Skill),仅包含一个图标和一些文本,并带有可选的缩进
+  ```latex
+  \skill[<indent>]{<icon>}{<text>}
+  ```
+
+* 点状技能(Pointskill)由图标、文本、分数和可选的最大可能数组成(默认值:5)。一些例子:
+  ```latex
+  \pointskill{<icon>}{<text>}{<points>}
+  ```
+  使用 Font Awesome 或 Academicons 图标创建技能,参数为文本、以及 5 分以内的 `<points>`。
+  ```latex
+  \pointskill{<icon>}{<text>}{<points>}[<maxnum>]
+  ```
+  使用 Font Awesome 或 Academicons 图标创建技能,参数为文本、以及最大值为 `<maxnum>`以内的 `<points>`。
+  ```latex
+  \pointskill{\flag{DE.png}}{German}{5}
+  ```
+  使用国旗图标来创建语言技能,必须使用 `\flag` 命令来指示该语言技能,这样才能告知类不应使用 `\maincolor` 为图标着色。
+
+* 条形技能(Barskill) 由图标、文本和技能条应填充的百分比组成
+  ```latex
+  \barskill{<icon>}{<text>}{<percentage>}
+  ```
+* “关于我”(About me)由多行文本组成
+  ```latex
+  \aboutme{<text spanning multiple lines>}
+  ```
+
+* 圆形彩色标签,例如图表和其他图形
+  ```latex
+  \chartlabel{<text>}
+  ```
+
+* 轮图/饼图/扇形图
+  ```latex
+  \wheelchart{<outer radius>}{<inner radius>}{%
+    <percentage>/<spacing>/<color>/<text>,
+    <percentage>/<spacing>/<color>/<text>
+  }
+  ```
+  * 百分比总计应为 100
+
+* 会员资格
+  ```latex
+  \begin{memberships}[<separation>=1em]
+    \membership[<iconwidth>=4em]{<logo>}{<text>}
+    \membership[<iconwidth>=4em]{<logo>}{<text>}
+    \membership[<iconwidth>=4em]{<logo>}{<text>}
+  \end{memberships}
+  ```
+  * 包含图标的第一列的宽度等于最大图标的宽度,以使第二列中的所有文本条目对齐。
+
+* 社交网络
+  ```latex
+  \begin{socialnetwork}[<separation>=1em]
+    \social{<icon>}{<url>}{<text>}
+    \social{<icon>}{<url>}{<text>}
+    \social{<icon>}{<url>}{<text>}
+  \end{socialnetwork}
+  ```
+  * 另一种图标样式,可以用于例如来自 Academicons 的社交网络图标,但也适用于 FontAwesome 图标。
+  * `text` 会被超链接至 `url`。
+  * `text` 可以像往常一样通过以下方式格式化,例如 `\texttt{}` 等。
+
+### 主体 Body
+简历的右栏包含一些内容的表格,例如“工作经验”必须在文档环境中定义。
+
+* 节(Section) and 小节(subsection)标题
+  ```latex
+  \cvsection
+  \cvsubsection
+  ```
+
+* 简历条目应该被 `cvtable` 括起来, 不论它们是哪一种条目:
+  ```latex
+  \begin{cvtable}[<arraystretch>=1]
+    \cvitem{<dates>}{<title>}{<location>}{<description>}
+    \cvitem{<dates>}{<title>}{<location>}{}
+    \cvitemshort{<key>}{<description>}
+    \cvpubitem{<title>}{<author>}{<journal>}{<year>}
+  \end{cvtable}
+  ```
+  * 包含描述的 `cvitem` 会使标题加粗,日期左对齐,并将描述放在下一行。 描述本身将使用在 [类选项](#类选项-class-options) 中定义的 `itemtextcolor` 作为自己的颜色
+  * 缺少描述的 `cvitem` 将添加与前一行相同样式的单行项目,但标题为“普通”而不是粗体。
+  * `cvitemshort` 将 `<key>` 左对齐,后跟其描述。
+  * `cvpubitem` 添加了一个条目,该条目具有左对齐的年份/日期,同一行上的粗体标题,然后是斜体作者和普通文本各占一行。
+  * `<arraystretch>` 修改 `cvtable` 各项之间的间距。对于 `cvitem` 表,应至少使用 1.5,对于 `cvitemshort`和无描述的
+`cvitem`,默认值已足够使用。
+
+* `cvsection`, `cvsubsection` 和描述文本的颜色可以按照 [类选项](#类选项-class-options) 中的说明定义。
+
+* 名称和职称组合,并具有适当的间距,字体和颜色
+  ```latex
+  \nameandjob
+  ```
+
+* 以地点、日期和签名来确定简历是惯例,例如在德国,通过以下方法
+  Germany is done via
+  ```latex
+  \cvsignature
+  ```
+
+### 字体配置 Font Configuration
+
+* 通过加载相应的软件包来更改默认字体,例如对于Google Noto
+  ```latex
+  \usepackage[sfdefault]{noto} % use noto google font
+  ```
+  或使用 XeLaTeX 的选项直接通过 fontspec 加载本地字体
+  ```latex
+  \usepackage[quiet]{fontspec}
+  \newfontfamily\headingfont[Path = fonts/]{segoeuib.ttf}
+  ```
+
+* 在处理多语言文档时,强烈建议不要使用 pdfLaTeX。由于我对 LuaLaTeX 的经验很少(但可能很快会切换到后者),因此我现在只能提供有关 XeLaTeX 的说明。您首先需要加载 polyglossia 软件包并分别为每种语言设置字体。对于基于拉丁语的文档,然后使用一些,例如阿拉伯文字片段
+  ```latex
+  \usepackage{polyglossia}
+  \newfontfamily\arabicfont[Script=Arabic]{Amiri}
+  \setdefaultlanguage{english}
+  \setotherlanguage{arabic}
+  % typeset arabic snippets in body text with either of
+  \textarabic{...}
+  \begin{Arabic}...\end{Arabic}
+  ```
+  而对于非拉丁文档,您可以使用类似这样的方法
+  ```latex
+  \usepackage{polyglossia}
+  \setmainfont{Amiri}
+  \newfontfamily\englishfont{Clear Sans}
+  \setdefaultlanguage{arabic}
+  \setotherlanguage{english}
+  % typeset english snippets in body text with either of
+  \textenglish{...}
+  \begin{english}...\end{english}
+  ```
+  对于波斯语(farsi),根据 [此回答](https://tex.stackexchange.com/a/238245) 以下方法应该起作用:
+  ```latex
+  \newfontfamily\farsifont[Script=Arabic,Scale=10,Contextuals=Swash]{IranNastaliq}
+  ```
+
+  根据您的默认字体样式,您需要使用 `\arabicfontfs`
+  (sans serif) 或 `\arabicfonttt` (monospace) 来代替 `\arabicfont`。
+
+  注意:将 RTL 字体设置为主字体也会自动翻转简历的其他部分。就我所知,尽管对于大多数部分来说这似乎没有问题(我一点也不习惯 RTL),但它确实破坏了一些技能命令,尤其是 `\pointskill` 和 `\membership` 并导致了一些间距问题。 无论如何,对于 RTL,您可能依然希望使用 `sidebarplacement=right` 功能。
+  
+* TODO: LuaLaTeX + babel settings
+
+* 通过 fontspec 加载时,需要手动安装 Amiri 和 Clear Sans 之类的字体。对于单语言文档,这不是必需的,您可以直接使用相应的 LaTeX 包来像第一个示例中所示那样简单地切换字体。
+
+* 如果要查找特定图标,例如 inkedIn,则应首先在 [FontAwesome gallery](https://fontawesome.com/icons?d=gallery) 中搜索其名称,例如,`linkedin-in` 然后在 [fontawesome5 package](https://ftp.gwdg.de/pub/ctan/fonts/fontawesome5/doc/fontawesome5.pdf) 中找到相应的 LaTeX 代码,在本例中为 `\faLinkedinIn`。
+
+* 如果要全局增加行距,请使用
+  ```latex
+  \usepackage{setspace}
+  \setstretch{1.1}
+  ```
+  而不是 `arraystretch` 修饰符。请注意,这也会影响边栏的内容。
+
+* 如果要更改基本字体大小,请对所有正文元素和侧边栏中的段落使用 `article` 类选项,例如 `12pt`。侧栏的标题可以通过 [类选项](#类选项-class-options) 中的 `sidesectionsize` 进行更改。对于名称和职称字体大小,您必须按照 [此处](#侧边栏-sidebar) 的说明重新定义相应的命令。
+
+
+## 范例 Example
+
+![](pics/template-0.jpg)
+![](pics/template-1.jpg)

+ 482 - 0
README.md

@@ -0,0 +1,482 @@
+Forty Seconds CV
+================
+
+[中文](README-zh-CN.md) | [Nederlands](README-nl-NL.md)
+
+## Description
+
+Just another CV class for LaTeX - but this time highly customizable!
+
+This project can be regarded as a major rewrite of the original twentysecondcv
+class. It does not aim to provide a new CV style that you can't find anywhere
+else, but rather takes a very well established one and adds a straightforward
+user interface to almost all layout elements and thus creates a highly
+customizable framework-class: FortySecondsCV.
+
+Just try it yourself starting from `template.tex`!
+
+When you should use twentysecondcv or altacv or any other LaTeX CV class:
+
+* You are happy with the layout elements offered by the existing CV class styles
+* You don't need to change paper sizes / formats at all
+* You don't want to customize your CV further
+
+When you should use the FortySecondsCV class:
+
+* You like to build a CV optimized for 2 pages incl. a sidebar (with option for
+  additional pages)
+* You want to highly customize your CV using a great palette of colors and
+  layout elements
+* You don't want to modify any definition in the class file
+* You prefer an easy-to-use user interface to almost all style elements
+* You need a cleanly written class file in case you decide to change low-level
+  class definitions
+
+
+## Attributions
+
+* This LaTeX CV class is based on the style ideas of the
+  [twentysecondscv class](https://github.com/spagnuolocarmine/TwentySecondsCurriculumVitae-LaTex)
+  by Carmine Spagnuolo
+* Language icons in the template are taken from [gosquared's repository](https://github.com/gosquared/flags)
+
+
+## Requirements
+
+You need to compile your document with XeLaTeX or LuaLaTeX in order to have
+the latest Font Awesome icons (`fontawesome5`) and Academicons. If you still
+want to compile with pdfLaTeX for whatever reason, ~~FortySecondsCV will fall
+back to the older icon package (`fontawesome`), where some icons look
+different and some others are not even included~~ Academicons won't be
+available.
+
+## License
+
+Forty Seconds CV is distributed under the BSD 3-Clause license. See LICENSE
+file for more information.
+
+## User Interface
+
+### Class Options
+
+Possible options that can be passed to FortySecondsCV are:
+
+* all valid options for the standard article class like e.g. `a4paper` or
+  `11pt`.
+* `sidesectionsize` sets the font size of sidebar section titles to `\large`,
+  `\huge`, etc. when assigned to `large`, `huge`, etc. (i.e. w/o leading slash)
+* `showframes` will show frames around the sidebar and body texts that help to
+  adjust margins correctly. Note, that this will move content of tables
+  slightly since tabular lines also take some space.
+* `vline=<length>` plots a red vertical line at x-position `<length>` to help
+  adjust sidebar content.
+* `maincolor=<color>` sets the theme color used for the entire sidebar incl.
+  headings, icons, and charts. Many colors are derived from it.
+* `sidecolor=<color>` sets the background color of the sidebar.
+* `sidetextcolor=<color>` sets the color of text located in the sidebar.
+* `sectioncolor=<color>` sets the color of section headings in the body text.
+* `itemtextcolor=<color>` sets the color of cvitem descriptions.
+* `subsectioncolor=<color>` same as sectioncolor for subsections.
+* `sidebarwidth=<length>` sets the total width of the sidebar, i.e. the width
+  of the visible sidebar color.
+* `topbottommargin=<length>` sets the top and bottom page margin for both
+  columns.
+* `leftrightmargin=<length>` sets the left and right page margin for both
+  columns as well as how much space will be between both columns.
+* `profilepicsize=<length>` sets the width of the profile picture.
+* `profilepicborderwidth=<length>` sets the width of the profile picture's
+  border.
+* `profilepicstyle=profilecircle` clips the profile picture to a circle as in
+  the original `twentysecondcv` class.
+* `profilepiczoom=<float>` sets the zoom factor for the profile picture.
+  Together with the two options below, this allows you to use your favorite
+  profile picture directly without modification and crop it here.
+* `profilepicxshift=<length>` sets the xshift for the profile picture.
+* `profilepicyshift=<length>` sets the yshift for the profile picture.
+* `profilepicrounding=<length>` sets the rounding radius for the top right and
+  bottom left corner in the default rounded profile picture style.
+* `sidebarplacement=right` puts the sidebar to the right of the body instead of
+  to the left.
+* `datecolwidth=<length>` sets the width of the date column of the body.
+
+Notes:
+
+* Lengths can be specified in any absolute length unit, e.g. `em` for widths,
+  `ex` for heights, or relative ones like `0.5\paperheight` or `0.3\linewidth`.
+* Colors can be picked from the entire catalogue provided by the `dvipsnames`,
+  `svgnames`, and `x11names` options of the `xcolor` package. See
+  [xcolor package documentation](http://mirrors.ctan.org/macros/latex/contrib/xcolor/xcolor.pdf)
+  for details and color tables.
+* Colors can also be redefined within the document body using e.g.
+  `\definecolor{sidecolor}{HTML}{000000}`.
+* Redefining `maincolor` is a bit tricky. See [#34][i34] for more details.
+
+[i34]: https://github.com/PandaScience/FortySecondsCV/issues/34
+
+
+### Sidebar
+
+Sidebars on front and back of the CV are generated using the commands
+`\makefrontsidebar` and `\makebacksidebar` within the `document` part of the
+LaTeX code. It is recommended to use `\newpage` immediately before
+`\makebacksidebar`.
+
+Layout elements in front and back sidebar can be added either by using
+```latex
+\addtofrontsidebar{}
+\addtobacksidebar{}
+```
+where some pre-defined elements like profile picture, name and job title are
+already set, or completely redefine them using
+```latex
+\renewcommand{\makefrontsidebar}{%
+  \begin{sidebar}
+    <your code>
+  \end{sidebar}
+}
+```
+You can use all previously defined macros like `\cvname` and `\cvjobtitle` or
+other elements like the icontable introduced [here](#personal-information).
+See [#22][i22] for a more detailed example.
+
+[i22]: https://github.com/PandaScience/FortySecondsCV/issues/22
+
+The `sidebar` environment makes sure that at least all text will be positioned
+correctly within the left column (sidebar) of each page. If you need something
+more restrictive, e.g. to prevent overflow when using multiple chart labels,
+you can enclose parts of the sidebar content in a `sidebarminipage`:
+```latex
+\begin{sidebarminipage}
+  \chartlabel{Bubble Diagram}
+  \chartlabel{with}
+  \chartlabel{proper}
+  \chartlabel{overflow}
+  \chartlabel{protection}
+  \chartlabel{for}
+  \chartlabel{labels}
+\end{sidebarminipage}
+```
+Using the `sidebar` environment, you can also add more sidebar definitions for
+additional pages easily. If you want the sidebar to appear on the right instead
+of the left side of the body, use the class option `sidebarplacement=right`.
+
+If you want to remove the sidebar entirely on a single page, just don't call
+any of the sidebar constructors. Then you may set your preferred margins using
+```latex
+\newpage
+% no \makebacksidebar etc.
+\newgeometry{
+  top=<length>,
+  bottom=<length>,
+  left=<length>,
+  right=<length>
+}
+```
+The defaults are `\leftrightmargin` and `\topbottommargin`. In case you want
+to return to the default layout on subsequent pages, simply call
+`\restoregeometry` after the next `\newpage`.
+
+The text color of sidebar elements can be adapted via the class option
+`sidetextcolor`. For heavier style changes you can also redefine the
+`\sidetext` command to your needs. For example:
+```latex
+  \renewcommand{\sidetext}[1]{\textcolor{red}{\texttt{#1}}}
+```
+
+### Personal Information
+
+Set personal information via convenience commands
+```latex
+  % logo picture
+  \cvlogopic[0.8\linewidth]{pics/logo.png}
+  % profile picture
+  \cvprofilepic{pics/profile.png}
+  % your name
+  \cvname{Panda Bear}
+  % job title/career
+  \cvjobtitle{Panda Scientist,\\[0.2em] Panda of the Year}
+  % date of birth
+  \cvbirthday{Mar 7, 2019}
+  % short address/location, use \newline if more than 1 line is required
+  \cvaddress{Park Ave.~1, 555 555 B-Woods}
+  % phone number
+  \cvphone{+86 555 555 555}
+  % personal website
+  \cvsite{https://pandascience.net}
+  % email address
+  \cvmail{panda@bamboo.cn}
+  % pgp key
+  \cvkey{4096R/FF00FF00}{0xAABBCCDDFF00FF00}
+  % any other custom entry
+  \cvcustomdata{\faFlag}{Chinese}
+```
+* Only `\cvname` and `\cvjobtitle` are mandatory.
+* If you want any (optional) entry not to show up in your CV, simply don't use
+  it. If you don't use any of these convenience commands, the personal
+  information table will not appear at all.
+* The email address will be automatically linked with `mailto:email`.
+* Your website will be hyperlinked as well.
+* For the pgp key, the first argument defines the displayed text which is
+  linked to a keyserver searching for the ID in the second argument.<br>
+  Note: For safety, you should use your key's long ID or its fingerprint in the
+  second argument.
+* The `\cvcustom{<icon>}{<text>}` macro shows how to define new lines using an
+  icon as first and some text as second argument. Behind the scenes, this
+  command is actually used to define the other convenience commands in the above
+  example.
+
+If you don't like the default style of the "personal information table", you
+can define your own via
+```latex
+\begin{icontable}[<arraystretch=1>]{<width 1st column>}{<space between columns>}
+  \personal{<icon>}{<text>}
+  \social{<icon>}{<url>}{<text>}
+\end{icontable}
+```
+where the width of the 1st column will also determine the size of all icons in
+this column, since icons are scaled to maximum width of their cell. For visual
+purposes, you can fine-tune the space between icons and corresponding text with
+the 2nd mandatory argument. The optional argument determines the spacing
+between table lines, which is only important for small icon heights (i.e. small
+1st columns).
+
+* `\personal` takes an icon and a text. The icon is passed to
+  `\circleicon{<icon>}`, which draws a circle filled with `maincolor` around
+  the icon symbol. The symbol itself appears white.
+* `\social` takes an icon and url + text. `Text` will be hyperlinked to `url`.
+  In case `url` is empty, your LaTeX compiler will throw a harmless warning
+  about "Suppressing link with empty target" and text will not be hyperlinked.
+  The icon itself is passed to `\socialicon{<icon>}`, which simply resizes
+  the icon symbol and draws it in `maincolor`. This version is the preferred
+  one for social network icons (see example).
+
+The default "personal information table" uses
+```latex
+\begin{icontable}[1.6]{1.7em}{0.4em}
+  \personal{<icon>}{<text>}
+\end{icontable}
+```
+
+
+### Further Sidebar Style Elements
+
+* Section heading
+  ```latex
+  \profilesection{<section title>}
+  ```
+
+* Simple skill containing only an icon and some text and with optional
+  indentation
+  ```latex
+  \skill[<indent>]{<icon>}{<text>}
+  ```
+
+* Pointskill consisting of an icon, text, the number of points and optionally
+  the maximum possible number (default: 5).
+  Some examples:
+  ```latex
+  \pointskill{<icon>}{<text>}{<points>}
+  ```
+  creates a skill using a Font Awesome or Academicons icon with some text and a
+  ranking of
+  `<points>` out of 5 points.
+  ```latex
+  \pointskill{<icon>}{<text>}{<points>}[<maxnum>]
+  ```
+  creates a skill using a Font Awesome or Academicons icon with some text and a
+  ranking of `<points>` out of `<maxnum>` possible points.
+  ```latex
+  \pointskill{\flag{DE.png}}{German}{5}
+  ```
+  creates a language skill using a flag-icon, which has to be indicated using
+  the `\flag` command in order to inform the class that the icon should not be
+  colored using `\maincolor`.
+
+* Barskill consisting of an optional height argument as well as a mandatory
+  icon, text and percentage of how far the skillbar should be filled
+  ```latex
+  \barskill[<height>]{<icon>}{<text>}{<percentage>}
+  ```
+
+* "About me" text
+  ```latex
+  \aboutme{<text spanning multiple lines>}
+  ```
+
+* Rounded and colored label for e.g. charts and other graphics
+  ```latex
+  \chartlabel{<text>}
+  ```
+
+* Wheel chart
+  ```latex
+  \wheelchart{<outer radius>}{<inner radius>}{%
+    <percentage>/<spacing>/<color>/<text>,
+    <percentage>/<spacing>/<color>/<text>
+  }
+  ```
+  * Percentages should add up to 100
+
+* Memberships
+  ```latex
+  \begin{memberships}[<separation>=1em]
+    \membership[<iconwidth>=4em]{<logo>}{<text>}
+    \membership[<iconwidth>=4em]{<logo>}{<text>}
+    \membership[<iconwidth>=4em]{<logo>}{<text>}
+  \end{memberships}
+  ```
+  * Width of the 1st column containing the icons is equal to the width of the
+    largest icon such that all text entries in the 2nd column are aligned.
+
+* Social Networks
+  ```latex
+  \begin{socialnetwork}[<separation>=1em]
+    \social{<icon>}{<url>}{<text>}
+    \social{<icon>}{<url>}{<text>}
+    \social{<icon>}{<url>}{<text>}
+  \end{socialnetwork}
+  ```
+  * Another icon style that could be used for e.g. social network icons from
+    Academicons, but is working for FontAwesome icons as well.
+  * `text` will be hyperlinked to `url`.
+  * `text` may be formatted as preferred like usual via e.g. `\texttt{}` etc.
+
+### Body
+
+The right part of the CV containing tables for sth. like "working experience"
+has to be defined within the `document` environment.
+
+To prevent unwanted line breaks in dates, the width of the first column in the
+body can be adjusted via the `datecolwidth` class option.
+
+* Section and subsection headings
+  ```latex
+  \cvsection
+  \cvsubsection
+  ```
+
+* CV items should be enclosed by `cvtable`, independent of the item type.
+  Possible types are:
+  ```latex
+  \begin{cvtable}[<arraystretch>=1]
+    \cvitem{<dates>}{<title>}{<location>}{<description>}
+    \cvitem{<dates>}{<title>}{<location>}{}
+    \cvitemshort{<key>}{<description>}
+    \cvpubitem{<title>}{<author>}{<journal>}{<year>}
+  \end{cvtable}
+  ```
+  * `cvitem` including a description will make the title bold, left-align the
+    date, right-align the location and put the description indented on the next
+    line. The description itself will be in `itemtextcolor` defined in the
+    [class options](#class-options).
+  * `cvitem` missing a description will add a one-line item in the style of the
+    former one but with a "normal" title instead of a bold one.
+  * `cvitemshort` left-aligns `<key>` followed by its description.
+  * `cvpubitem` adds an entry with left-aligned year/date, bold title on same
+    line followed by italic author and normal text journal, each on its own
+    line.
+  * `<arraystretch>` modifies the spacing between items of `cvtable`. For
+     tables of `cvitem`, you should use at least 1.5, for `cvitemshort` and
+     `cvitem` without description, the default value is sufficient.
+
+* Coloring
+  `cvsection`, `cvsubsection` and description text colors can be defined as
+  described in [class options](#class-options).
+
+* Name and job title combination with proper spacing, font and color
+  ```latex
+  \nameandjob
+  ```
+
+* Finalizing the CV with a place, date and signature as common practice in e.g.
+  Germany is done via
+  ```latex
+  \cvsignature
+  ```
+
+### Font Configuration
+
+* Change the default font either by loading the corresponding package, e.g. for
+  google noto
+  ```latex
+  \usepackage[sfdefault]{noto} % use noto google font
+  ```
+  or by using XeLaTeX's option to load local fonts directly via fontspec
+  ```latex
+  \usepackage[quiet]{fontspec}
+  \newfontfamily\headingfont[Path = fonts/]{segoeuib.ttf}
+  ```
+
+* When working on multi-language documents, I highly advise against the usage
+  of pdfLaTeX. Since I have only little experience with LuaLaTeX (but will
+  probably switch to the latter soon), I can only provide instructions for
+  XeLaTeX for now. There you first need to load the `polyglossia` package and
+  set fonts for each language separately.  For latin-based documents with e.g.
+  some arabic text snippets then use
+  ```latex
+  \usepackage{polyglossia}
+  \newfontfamily\arabicfont[Script=Arabic]{Amiri}
+  \setdefaultlanguage{english}
+  \setotherlanguage{arabic}
+  % typeset arabic snippets in body text with either of
+  \textarabic{...}
+  \begin{Arabic}...\end{Arabic}
+  ```
+  whereas for non-latin-based documents you can use something like
+  ```latex
+  \usepackage{polyglossia}
+  \setmainfont{Amiri}
+  \newfontfamily\englishfont{Clear Sans}
+  \setdefaultlanguage{arabic}
+  \setotherlanguage{english}
+  % typeset english snippets in body text with either of
+  \textenglish{...}
+  \begin{english}...\end{english}
+  ```
+  For persian languages (farsi), the following should work according to
+  [this answer](https://tex.stackexchange.com/a/238245):
+  ```latex
+  \newfontfamily\farsifont[Script=Arabic,Scale=10,Contextuals=Swash]{IranNastaliq}
+  ```
+  Depending on what font style is your default, you need to use `\arabicfontfs`
+  (sans serif) or `\arabicfonttt` (monospace) instead of `\arabicfont`.
+
+  NOTE: Setting a RTL-font as main font will also flip other parts of the
+  CV automatically. While this seems to be no problem for most parts as far as
+  I can tell (I'm not used to RTL at all), it does break some of the skill
+  commands, notably `\pointskill` and `\membership` and leads to some spacing
+  issues. Anyways, for RTL you probably want to use the
+  `sidebarplacement=right` feature as well.
+
+* TODO: LuaLaTeX + babel settings
+
+* You need to install fonts like Amiri and Clear Sans manually when
+  loading them via fontspec. This is not necessary for mono-language documents
+  where you can simply switch fonts like shown in the first example by using
+  the respective LaTeX packages directly.
+
+* If you are looking for a specific icon, say LinkedIn, you should first search
+  the [FontAwesome gallery](https://fontawesome.com/icons?d=gallery) for its
+  name, e.g. `linkedin-in` and then find the corresponding LaTeX code in the
+  [fontawesome5 package](https://ftp.gwdg.de/pub/ctan/fonts/fontawesome5/doc/fontawesome5.pdf),
+  which is in this case `\faLinkedinIn`.
+
+* If you want to increase the line spacing globally, use
+  ```latex
+  \usepackage{setspace}
+  \setstretch{1.1}
+  ```
+  instead of the `arraystretch` modifier. Note, that this will also affect the
+  sidebar content.
+
+* If you want to change the base font size, use the 'article' class options
+  like `12pt` for all body elements and the paragraphs in the sidebar. Sidebar
+  section titles can be changed via the [class option](#class-options)
+  `sidesectionsize`. For name and job title font sizes you have to
+  redefine the respective commands as explained [here](#sidebar).
+
+
+## Example
+
+![](pics/template-0.jpg)
+![](pics/template-1.jpg)

+ 250 - 0
cv.tex

@@ -0,0 +1,250 @@
+% FortySecondsCV LaTeX template
+% Copyright © 2019-2022 René Wirnata <rene.wirnata@pandascience.net>
+% Licensed under the 3-Clause BSD License. See LICENSE file for details.
+%
+% Please visit https://github.com/PandaScience/FortySecondsCV for the most
+% recent version! For bugs or feature requests, please open a new issue on
+% github.
+%
+% Contributors:
+% https://github.com/PandaScience/FortySecondsCV/graphs/contributors
+%
+% Attributions
+% ------------
+% * fortysecondscv is based on the twentysecondcv class by Carmine Spagnuolo
+%   (cspagnuolo@unisa.it), released under the MIT license and available under
+%   https://github.com/spagnuolocarmine/TwentySecondsCurriculumVitae-LaTex
+% * further attributions are indicated immediately before corresponding code
+
+
+%-------------------------------------------------------------------------------
+%                             ADDITIONAL PACKAGES
+%-------------------------------------------------------------------------------
+\documentclass[
+	a4paper,
+	% 9pt,
+	% sidesectionsize=Large,
+	% showframes,
+	% vline=2.2em,
+	% maincolor=cvgreen,
+	% sidecolor=gray!50,
+	% sidetextcolor=green,
+	% sectioncolor=red,
+	% subsectioncolor=orange,
+	% itemtextcolor=black!80,
+	% sidebarwidth=0.4\paperwidth,
+	% topbottommargin=0.03\paperheight,
+	% leftrightmargin=20pt,
+	% profilepicsize=4.5cm,
+	% profilepicborderwidth=3.5pt,
+	% profilepicstyle=profilecircle,
+	% profilepiczoom=1.0,
+	% profilepicxshift=0mm,
+	% profilepicyshift=0mm,
+	% profilepicrounding=1.0cm,
+	% logowidth=4.5cm,
+	% logospace=5mm,
+	% logoposition=before,
+	% sidebarplacement=right,
+	% datecolwidth=0.22\textwidth,
+]{fortysecondscv}
+
+% fine tune line spacing
+% \usepackage{setspace}
+% \setstretch{1.1}
+
+% improve word spacing and hyphenation
+\usepackage{microtype}
+\usepackage{ragged2e}
+
+% uncomment in case you don't want any hyphenation
+% \usepackage[none]{hyphenat}
+
+% take care of proper font encoding
+\ifxetexorluatex
+	\usepackage{fontspec}
+	\defaultfontfeatures{Ligatures=TeX}
+	% \newfontfamily\headingfont[Path=fonts/]{segoeuib.ttf} % use local font
+\else
+	\usepackage[utf8]{inputenc}
+	\usepackage[T1]{fontenc}
+\fi
+
+% use a sans serif font as default
+\usepackage[sfdefault]{ClearSans}
+% \usepackage[sfdefault]{noto}
+
+% multi-language CV XeLaTeX and polyglossia (should also work with LuaLaTeX)
+% NOTE: breaks \pointskill, \membership and some spacings
+% \ifxetexorluatex
+% 	\usepackage{polyglossia}
+% 	\newfontfamily\arabicfontsf[Script=Arabic,Scale=1.5]{Amiri}
+% 	\newfontfamily\englishfontsf{Clear Sans}
+% 	\setmainfont{Amiri}
+% 	\setdefaultlanguage{arabic}
+% 	\setotherlanguage{english}
+% \fi
+
+% enable mathematical syntax for some symbols like \varnothing
+\usepackage{amssymb}
+
+% bubble diagram configuration
+\usepackage{smartdiagram}
+\smartdiagramset{
+	% default font size is \large, so adjust to harmonize with sidebar layout
+	bubble center node font = \footnotesize,
+	bubble node font = \footnotesize,
+	% default: 4cm/2.5cm; make minimum diameter relative to sidebar size
+	bubble center node size = 0.4\sidebartextwidth,
+	bubble node size = 0.25\sidebartextwidth,
+	distance center/other bubbles = 1.5em,
+	% set center bubble color
+	bubble center node color = maincolor!70,
+	% define the list of colors usable in the diagram
+	set color list = {maincolor!10, maincolor!40,
+	maincolor!20, maincolor!60, maincolor!35},
+	% sets the opacity at which the bubbles are shown
+	bubble fill opacity = 0.8,
+}
+
+%-------------------------------------------------------------------------------
+%                            PERSONAL INFORMATION
+%-------------------------------------------------------------------------------
+%% mandatory information
+% your name
+\cvname{Adrien Carteron}
+% job title/career
+\cvjobtitle{Développeur backend}%,\\[0.2em] Panda }
+
+%% optional information
+% profile picture
+%\cvprofilepic{pics/profile.png}
+% logo picture
+%\cvlogopic{pics/logo_txt.png}
+
+% NOTE: ordering in sidebar will mimic the following order
+% date of birth
+\cvbirthday{35 ans}
+% short address/location, use \newline if more than 1 line is required
+\cvaddress{59 rue Lucie Aubrac, appt 6142 33300 Bordeaux}
+% phone number
+\cvphone{06 24 66 00 91}
+% personal website
+\cvsite{https://wiki.cha-sam.re}
+% email address
+\cvmail{acarteron@cha-sam.re}
+% pgp key
+%\cvkey{4096R/FF00FF00}{0xAABBCCDDFF00FF00}
+% any other custom entry
+%\cvcustomdata{\faFlag}{Chinese}
+
+%-------------------------------------------------------------------------------
+%                              SIDEBAR 1st PAGE
+%-------------------------------------------------------------------------------
+% add more profile sections to sidebar on first page
+\addtofrontsidebar{
+	% include gosquare national flags from https://github.com/gosquared/flags;
+	% naming according to ISO 3166-1 alpha-2 country codes
+	\graphicspath{{pics/flags/shiny/}}
+
+	% social network accounts incl. proper hyperlinks
+	\sidesection{Web}
+		\begin{icontable}{2.5em}{1em}
+			\social{\faGit}
+				{https://git.cha-sam.re}
+				{Self hosted git}
+			\social{\faGithub}
+				{https://github.com/acarteron}
+				{Github Project Page Link}
+		\end{icontable}
+
+	\sidesection{Languages}
+	\pointskill{\flag{FR.png}}{Français}{5}
+	\pointskill{\flag{GB.png}}{Anglais}{3}
+	
+	\sidesection{Hard Skills}
+	\pointskill{\diErlangPlain}{Erlang}{4}
+	\pointskill{\diCplusplusPlain}{C++}{4}
+        \pointskill{\diPythonPlain}{Django}{3}
+        \pointskill{}{Prolog}{3}
+        \pointskill{\diPostgresqlPlain}{PostgreSQL}{3}
+        \pointskill{\diJavaPlain}{Java}{3}
+        \pointskill{\diLinuxPlain}{Linux}{3}
+        \pointskill{\diDockerPlain}{Docker}{3}
+        \pointskill{\diKubernetesPlain}{Kubernetes}{1}
+
+%% 	\sidesection{Soft Skills}
+%% 		\pointskill{\faHome}{Looking Cute}{4}[4]
+%% 			\skill[1.8em]{\faCompress}{No need to specify further}
+%% 		\pointskill{\faChild}{Chillin' hard}{3}[4]
+%% 			\skill[1.8em]{\faCompress}{On a tree}
+%% 			\skill[1.8em]{\faCompress}{In the grass}
+}
+
+
+%-------------------------------------------------------------------------------
+%                         TABLE ENTRIES RIGHT COLUMN
+%-------------------------------------------------------------------------------
+\begin{document}
+
+\makefrontsidebar
+
+\cvsection{Expériences professionnelles}
+\begin{cvtable}[3]
+  \cvitem{2020 -}{Ingénieur R\&D production}{Fieldbox.ai, Bordeaux}{Diagnostiquer et résoudre les incidents en production. Créer des patch et bugfix, superviser les étapes de build et déploiement. Créer des outils de diagnostic d'incidents.}
+  \cvitem{2018 - 2020}{Ingénieur R\&D}
+      {Fieldbox.ai, Bordeaux}
+      {Maintenance et création de services et fonctionnalités en erlang. Supervision de la migration de base de données.}
+  \cvitem
+      {2014 - 2017}
+      {Doctorant Informatique}
+      {Inria, Bordeaux}
+      {\href{https://hal.inria.fr/tel-01663150v2}{Une approche événementielle pour le développement de services multi-métiers dédiés à l’assistance domiciliaire.}\\ Création d'un langage dédié d'orchestration de capteurs à destination d'intervenants non informaticiens. Règles de traitement d'évènements complexes pour l'analyse de données utilisateur. Infrastructure sous-jacente.}
+  \cvitem
+      {2013 - 2014}
+    {Ingénieur de recherche}{Inria, Bordeaux}
+    {Développement et administration d'une plateforme d'assistance à domicile}
+\end{cvtable}
+
+
+\cvsection{Cursus}
+\cvsubsection{Formation}
+\begin{cvtable}[1.5]
+	\cvitem{2012 - 2013}
+      {Master 2 Informatique}
+      {Université d'Orléans}
+      {Visualisation Imagerie et Performances}
+	\cvitem {2011}{Licence 3 Informatique}{Université d'Orléans}{Sciences et Technologies de l'Information et des Communications}
+\end{cvtable}
+
+\cvsubsection{Stages}
+\begin{cvtable}[1.5]
+   \cvitem{2013}{Stage de fin de Master 2}{Bureau de Recherches Géologiques et Minières}{Parallélisme d'une application métier Windows.\\ Application "boite à outils" du géologue. Définir des méthodes de parallélisme selon les langages (Fortran, C, C++, C\#) et les composants. Établir une étude de faisabilité sur l'application globale et définition de patterns de parallélisme.}
+   \cvitem
+       {2012}{Stage de fin de Master 1}{Laboratoire d'Informatique Fondamentale d'Orléans}{Équilibrage / affinité des thread}
+\end{cvtable}
+
+%% \cvsection{Publications}
+%% \begin{cvtable}
+%% 	\cvpubitem{Cooking: 100 recipes for lazy Pandas}{Me and My Panda Friends}
+%% 		{Panda's Culinary World}{2010}
+%% 	\cvpubitem{Pandastasia}{Still Me}{Bamboo Books Assoc.}{2005}
+%% \end{cvtable}
+
+\cvsection{Awards}
+\begin{cvtable}
+	\cvitem{2015}{Prix du meilleur design}{HackaNiort}{}
+	\cvitem{2009}{Vainqueur du trophé Syntec des IUT de France}{}{}
+\end{cvtable}
+
+
+\cvsection{Projets personnels}
+\begin{cvtable}
+	\cvitemshort{Travail du bois}{Fabrication de guitares électriques}
+	\cvitemshort{Handehelds}{Anbernic RG350; changement d'écran avec création du driver, compilation du système avec buildroot, développement SDL2}
+	\cvitemshort{Linux}{Smartphone sous sailfishos comme daily}
+\end{cvtable}
+
+%% \cvsignature                   
+
+\end{document}

+ 443 - 0
devicons.sty

@@ -0,0 +1,443 @@
+%% Generated by github.com/JeppeKlitgaard/DevIconsLatex
+
+% Identify this package.
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{devicons}[Provides some DevIcons]
+
+% Requirements to use.
+\usepackage{fontspec}
+
+% Define shortcut to load the devicon
+\newfontfamily{\DI}{devicon}
+% Generic command displaying an icon by its name.
+\newcommand*{\devicon}[1]{{
+  \DI\csname devicon@#1\endcsname
+
+}}
+\expandafter\def\csname devicon@storybook-plain-wordmark\endcsname { \symbol{"E900}} \def\diStorybookPlainWordmark {{\DI\csname devicon@storybook-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@storybook-plain\endcsname { \symbol{"E901}} \def\diStorybookPlain {{\DI\csname devicon@storybook-plain\endcsname}}
+\expandafter\def\csname devicon@pandas-original-wordmark\endcsname { \symbol{"E902}} \def\diPandasOriginalWordmark {{\DI\csname devicon@pandas-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@pandas-original\endcsname { \symbol{"E903}} \def\diPandasOriginal {{\DI\csname devicon@pandas-original\endcsname}}
+\expandafter\def\csname devicon@centos-plain-wordmark\endcsname { \symbol{"E904}} \def\diCentosPlainWordmark {{\DI\csname devicon@centos-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@centos-plain\endcsname { \symbol{"E905}} \def\diCentosPlain {{\DI\csname devicon@centos-plain\endcsname}}
+\expandafter\def\csname devicon@azure-plain-wordmark\endcsname { \symbol{"E906}} \def\diAzurePlainWordmark {{\DI\csname devicon@azure-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@azure-plain\endcsname { \symbol{"E907}} \def\diAzurePlain {{\DI\csname devicon@azure-plain\endcsname}}
+\expandafter\def\csname devicon@go-line\endcsname { \symbol{"E908}} \def\diGoLine {{\DI\csname devicon@go-line\endcsname}}
+\expandafter\def\csname devicon@go-plain\endcsname { \symbol{"E909}} \def\diGoPlain {{\DI\csname devicon@go-plain\endcsname}}
+\expandafter\def\csname devicon@go-original-wordmark\endcsname { \symbol{"E90A}} \def\diGoOriginalWordmark {{\DI\csname devicon@go-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@devicon-line-wordmark\endcsname { \symbol{"E90B}} \def\diDeviconLineWordmark {{\DI\csname devicon@devicon-line-wordmark\endcsname}}
+\expandafter\def\csname devicon@devicon-line\endcsname { \symbol{"E90C}} \def\diDeviconLine {{\DI\csname devicon@devicon-line\endcsname}}
+\expandafter\def\csname devicon@devicon-plain-wordmark\endcsname { \symbol{"E90D}} \def\diDeviconPlainWordmark {{\DI\csname devicon@devicon-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@devicon-plain\endcsname { \symbol{"E90E}} \def\diDeviconPlain {{\DI\csname devicon@devicon-plain\endcsname}}
+\expandafter\def\csname devicon@msdos-line\endcsname { \symbol{"E90F}} \def\diMsdosLine {{\DI\csname devicon@msdos-line\endcsname}}
+\expandafter\def\csname devicon@arduino-plain-wordmark\endcsname { \symbol{"E910}} \def\diArduinoPlainWordmark {{\DI\csname devicon@arduino-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@arduino-plain\endcsname { \symbol{"E911}} \def\diArduinoPlain {{\DI\csname devicon@arduino-plain\endcsname}}
+\expandafter\def\csname devicon@qt-original\endcsname { \symbol{"E912}} \def\diQtOriginal {{\DI\csname devicon@qt-original\endcsname}}
+\expandafter\def\csname devicon@gcc-plain\endcsname { \symbol{"E913}} \def\diGccPlain {{\DI\csname devicon@gcc-plain\endcsname}}
+\expandafter\def\csname devicon@svelte-plain-wordmark\endcsname { \symbol{"E914}} \def\diSveltePlainWordmark {{\DI\csname devicon@svelte-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@svelte-plain\endcsname { \symbol{"E915}} \def\diSveltePlain {{\DI\csname devicon@svelte-plain\endcsname}}
+\expandafter\def\csname devicon@jira-plain-wordmark\endcsname { \symbol{"E916}} \def\diJiraPlainWordmark {{\DI\csname devicon@jira-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@jira-plain\endcsname { \symbol{"E917}} \def\diJiraPlain {{\DI\csname devicon@jira-plain\endcsname}}
+\expandafter\def\csname devicon@slack-plain-wordmark\endcsname { \symbol{"E918}} \def\diSlackPlainWordmark {{\DI\csname devicon@slack-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@slack-plain\endcsname { \symbol{"E919}} \def\diSlackPlain {{\DI\csname devicon@slack-plain\endcsname}}
+\expandafter\def\csname devicon@canva-original\endcsname { \symbol{"E91A}} \def\diCanvaOriginal {{\DI\csname devicon@canva-original\endcsname}}
+\expandafter\def\csname devicon@jamstack-plain-wordmark\endcsname { \symbol{"E91B}} \def\diJamstackPlainWordmark {{\DI\csname devicon@jamstack-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@jamstack-original\endcsname { \symbol{"E91C}} \def\diJamstackOriginal {{\DI\csname devicon@jamstack-original\endcsname}}
+\expandafter\def\csname devicon@denojs-original-wordmark\endcsname { \symbol{"E91D}} \def\diDenojsOriginalWordmark {{\DI\csname devicon@denojs-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@denojs-original\endcsname { \symbol{"E91E}} \def\diDenojsOriginal {{\DI\csname devicon@denojs-original\endcsname}}
+\expandafter\def\csname devicon@apachekafka-original-wordmark\endcsname { \symbol{"E91F}} \def\diApachekafkaOriginalWordmark {{\DI\csname devicon@apachekafka-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@apachekafka-original\endcsname { \symbol{"E920}} \def\diApachekafkaOriginal {{\DI\csname devicon@apachekafka-original\endcsname}}
+\expandafter\def\csname devicon@filezilla-plain-wordmark\endcsname { \symbol{"E921}} \def\diFilezillaPlainWordmark {{\DI\csname devicon@filezilla-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@filezilla-plain\endcsname { \symbol{"E922}} \def\diFilezillaPlain {{\DI\csname devicon@filezilla-plain\endcsname}}
+\expandafter\def\csname devicon@opengl-plain\endcsname { \symbol{"E923}} \def\diOpenglPlain {{\DI\csname devicon@opengl-plain\endcsname}}
+\expandafter\def\csname devicon@putty-plain\endcsname { \symbol{"E924}} \def\diPuttyPlain {{\DI\csname devicon@putty-plain\endcsname}}
+\expandafter\def\csname devicon@opera-plain-wordmark\endcsname { \symbol{"E925}} \def\diOperaPlainWordmark {{\DI\csname devicon@opera-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@opera-plain\endcsname { \symbol{"E926}} \def\diOperaPlain {{\DI\csname devicon@opera-plain\endcsname}}
+\expandafter\def\csname devicon@subversion-original\endcsname { \symbol{"E927}} \def\diSubversionOriginal {{\DI\csname devicon@subversion-original\endcsname}}
+\expandafter\def\csname devicon@tortoisegit-line\endcsname { \symbol{"E928}} \def\diTortoisegitLine {{\DI\csname devicon@tortoisegit-line\endcsname}}
+\expandafter\def\csname devicon@tortoisegit-plain\endcsname { \symbol{"E929}} \def\diTortoisegitPlain {{\DI\csname devicon@tortoisegit-plain\endcsname}}
+\expandafter\def\csname devicon@towergit-plain-wordmark\endcsname { \symbol{"E92A}} \def\diTowergitPlainWordmark {{\DI\csname devicon@towergit-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@towergit-plain\endcsname { \symbol{"E92B}} \def\diTowergitPlain {{\DI\csname devicon@towergit-plain\endcsname}}
+\expandafter\def\csname devicon@unity-original-wordmark\endcsname { \symbol{"E92C}} \def\diUnityOriginalWordmark {{\DI\csname devicon@unity-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@unity-original\endcsname { \symbol{"E92D}} \def\diUnityOriginal {{\DI\csname devicon@unity-original\endcsname}}
+\expandafter\def\csname devicon@neo4j-plain-wordmark\endcsname { \symbol{"E92E}} \def\diNeoJPlainWordmark {{\DI\csname devicon@neo4j-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@neo4j-plain\endcsname { \symbol{"E92F}} \def\diNeoJPlain {{\DI\csname devicon@neo4j-plain\endcsname}}
+\expandafter\def\csname devicon@nuxtjs-plain-wordmark\endcsname { \symbol{"E930}} \def\diNuxtjsPlainWordmark {{\DI\csname devicon@nuxtjs-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@nuxtjs-plain\endcsname { \symbol{"E931}} \def\diNuxtjsPlain {{\DI\csname devicon@nuxtjs-plain\endcsname}}
+\expandafter\def\csname devicon@socketio-original-wordmark\endcsname { \symbol{"E932}} \def\diSocketioOriginalWordmark {{\DI\csname devicon@socketio-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@socketio-original\endcsname { \symbol{"E933}} \def\diSocketioOriginal {{\DI\csname devicon@socketio-original\endcsname}}
+\expandafter\def\csname devicon@processing-plain-wordmark\endcsname { \symbol{"E934}} \def\diProcessingPlainWordmark {{\DI\csname devicon@processing-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@processing-plain\endcsname { \symbol{"E935}} \def\diProcessingPlain {{\DI\csname devicon@processing-plain\endcsname}}
+\expandafter\def\csname devicon@bootstrap-plain-wordmark\endcsname { \symbol{"E936}} \def\diBootstrapPlainWordmark {{\DI\csname devicon@bootstrap-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@bootstrap-plain\endcsname { \symbol{"E937}} \def\diBootstrapPlain {{\DI\csname devicon@bootstrap-plain\endcsname}}
+\expandafter\def\csname devicon@feathersjs-original\endcsname { \symbol{"E938}} \def\diFeathersjsOriginal {{\DI\csname devicon@feathersjs-original\endcsname}}
+\expandafter\def\csname devicon@adonisjs-original-wordmark\endcsname { \symbol{"E939}} \def\diAdonisjsOriginalWordmark {{\DI\csname devicon@adonisjs-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@adonisjs-original\endcsname { \symbol{"E93A}} \def\diAdonisjsOriginal {{\DI\csname devicon@adonisjs-original\endcsname}}
+\expandafter\def\csname devicon@numpy-original-wordmark\endcsname { \symbol{"E93B}} \def\diNumpyOriginalWordmark {{\DI\csname devicon@numpy-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@numpy-original\endcsname { \symbol{"E93C}} \def\diNumpyOriginal {{\DI\csname devicon@numpy-original\endcsname}}
+\expandafter\def\csname devicon@matlab-line\endcsname { \symbol{"E93D}} \def\diMatlabLine {{\DI\csname devicon@matlab-line\endcsname}}
+\expandafter\def\csname devicon@matlab-plain\endcsname { \symbol{"E93E}} \def\diMatlabPlain {{\DI\csname devicon@matlab-plain\endcsname}}
+\expandafter\def\csname devicon@clojurescript-plain\endcsname { \symbol{"E93F}} \def\diClojurescriptPlain {{\DI\csname devicon@clojurescript-plain\endcsname}}
+\expandafter\def\csname devicon@threejs-original-wordmark\endcsname { \symbol{"E940}} \def\diThreejsOriginalWordmark {{\DI\csname devicon@threejs-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@threejs-original\endcsname { \symbol{"E941}} \def\diThreejsOriginal {{\DI\csname devicon@threejs-original\endcsname}}
+\expandafter\def\csname devicon@markdown-original\endcsname { \symbol{"E942}} \def\diMarkdownOriginal {{\DI\csname devicon@markdown-original\endcsname}}
+\expandafter\def\csname devicon@nixos-plain-wordmark\endcsname { \symbol{"E992}} \def\diNixosPlainWordmark {{\DI\csname devicon@nixos-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@nixos-plain\endcsname { \symbol{"E9B2}} \def\diNixosPlain {{\DI\csname devicon@nixos-plain\endcsname}}
+\expandafter\def\csname devicon@perl-plain\endcsname { \symbol{"E9B3}} \def\diPerlPlain {{\DI\csname devicon@perl-plain\endcsname}}
+\expandafter\def\csname devicon@tensorflow-line-wordmark\endcsname { \symbol{"E9B4}} \def\diTensorflowLineWordmark {{\DI\csname devicon@tensorflow-line-wordmark\endcsname}}
+\expandafter\def\csname devicon@tensorflow-line\endcsname { \symbol{"E9B5}} \def\diTensorflowLine {{\DI\csname devicon@tensorflow-line\endcsname}}
+\expandafter\def\csname devicon@tensorflow-original-wordmark\endcsname { \symbol{"E9B6}} \def\diTensorflowOriginalWordmark {{\DI\csname devicon@tensorflow-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@tensorflow-original\endcsname { \symbol{"E9B7}} \def\diTensorflowOriginal {{\DI\csname devicon@tensorflow-original\endcsname}}
+\expandafter\def\csname devicon@zig-plain-wordmark\endcsname { \symbol{"E9B8}} \def\diZigPlainWordmark {{\DI\csname devicon@zig-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@zig-original\endcsname { \symbol{"E9B9}} \def\diZigOriginal {{\DI\csname devicon@zig-original\endcsname}}
+\expandafter\def\csname devicon@raspberrypi-line-wordmark\endcsname { \symbol{"E9BA}} \def\diRaspberrypiLineWordmark {{\DI\csname devicon@raspberrypi-line-wordmark\endcsname}}
+\expandafter\def\csname devicon@raspberrypi-line\endcsname { \symbol{"E9BB}} \def\diRaspberrypiLine {{\DI\csname devicon@raspberrypi-line\endcsname}}
+\expandafter\def\csname devicon@embeddedc-plain-wordmark\endcsname { \symbol{"E9BC}} \def\diEmbeddedcPlainWordmark {{\DI\csname devicon@embeddedc-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@embeddedc-plain\endcsname { \symbol{"E9BD}} \def\diEmbeddedcPlain {{\DI\csname devicon@embeddedc-plain\endcsname}}
+\expandafter\def\csname devicon@labview-plain-wordmark\endcsname { \symbol{"E9BE}} \def\diLabviewPlainWordmark {{\DI\csname devicon@labview-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@labview-plain\endcsname { \symbol{"E9BF}} \def\diLabviewPlain {{\DI\csname devicon@labview-plain\endcsname}}
+\expandafter\def\csname devicon@modx-plain-wordmark\endcsname { \symbol{"E9C0}} \def\diModxPlainWordmark {{\DI\csname devicon@modx-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@modx-plain\endcsname { \symbol{"E9C1}} \def\diModxPlain {{\DI\csname devicon@modx-plain\endcsname}}
+\expandafter\def\csname devicon@knockout-plain-wordmark\endcsname { \symbol{"E9C2}} \def\diKnockoutPlainWordmark {{\DI\csname devicon@knockout-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@rstudio-plain\endcsname { \symbol{"E9C3}} \def\diRstudioPlain {{\DI\csname devicon@rstudio-plain\endcsname}}
+\expandafter\def\csname devicon@phalcon-plain\endcsname { \symbol{"E9C4}} \def\diPhalconPlain {{\DI\csname devicon@phalcon-plain\endcsname}}
+\expandafter\def\csname devicon@minitab-plain\endcsname { \symbol{"E9C5}} \def\diMinitabPlain {{\DI\csname devicon@minitab-plain\endcsname}}
+\expandafter\def\csname devicon@bulma-plain\endcsname { \symbol{"E9C6}} \def\diBulmaPlain {{\DI\csname devicon@bulma-plain\endcsname}}
+\expandafter\def\csname devicon@spss-plain\endcsname { \symbol{"E9C7}} \def\diSpssPlain {{\DI\csname devicon@spss-plain\endcsname}}
+\expandafter\def\csname devicon@karma-plain\endcsname { \symbol{"E9CA}} \def\diKarmaPlain {{\DI\csname devicon@karma-plain\endcsname}}
+\expandafter\def\csname devicon@jest-plain\endcsname { \symbol{"E9CB}} \def\diJestPlain {{\DI\csname devicon@jest-plain\endcsname}}
+\expandafter\def\csname devicon@circleci-plain-wordmark\endcsname { \symbol{"E9CC}} \def\diCircleciPlainWordmark {{\DI\csname devicon@circleci-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@circleci-plain\endcsname { \symbol{"E9CD}} \def\diCircleciPlain {{\DI\csname devicon@circleci-plain\endcsname}}
+\expandafter\def\csname devicon@codecov-plain\endcsname { \symbol{"E9CE}} \def\diCodecovPlain {{\DI\csname devicon@codecov-plain\endcsname}}
+\expandafter\def\csname devicon@magento-line\endcsname { \symbol{"E9CF}} \def\diMagentoLine {{\DI\csname devicon@magento-line\endcsname}}
+\expandafter\def\csname devicon@magento-original-wordmark\endcsname { \symbol{"E9D0}} \def\diMagentoOriginalWordmark {{\DI\csname devicon@magento-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@magento-original\endcsname { \symbol{"E9D1}} \def\diMagentoOriginal {{\DI\csname devicon@magento-original\endcsname}}
+\expandafter\def\csname devicon@shopware-original-wordmark\endcsname { \symbol{"E9D2}} \def\diShopwareOriginalWordmark {{\DI\csname devicon@shopware-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@shopware-original\endcsname { \symbol{"E9D3}} \def\diShopwareOriginal {{\DI\csname devicon@shopware-original\endcsname}}
+\expandafter\def\csname devicon@salesforce-plain\endcsname { \symbol{"E9D4}} \def\diSalesforcePlain {{\DI\csname devicon@salesforce-plain\endcsname}}
+\expandafter\def\csname devicon@vuestorefront-plain\endcsname { \symbol{"E9D5}} \def\diVuestorefrontPlain {{\DI\csname devicon@vuestorefront-plain\endcsname}}
+\expandafter\def\csname devicon@unix-original\endcsname { \symbol{"E9D6}} \def\diUnixOriginal {{\DI\csname devicon@unix-original\endcsname}}
+\expandafter\def\csname devicon@godot-plain-wordmark\endcsname { \symbol{"E9D7}} \def\diGodotPlainWordmark {{\DI\csname devicon@godot-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@godot-plain\endcsname { \symbol{"E9D8}} \def\diGodotPlain {{\DI\csname devicon@godot-plain\endcsname}}
+\expandafter\def\csname devicon@vscode-plain-wordmark\endcsname { \symbol{"E9D9}} \def\diVscodePlainWordmark {{\DI\csname devicon@vscode-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@vscode-plain\endcsname { \symbol{"E9DA}} \def\diVscodePlain {{\DI\csname devicon@vscode-plain\endcsname}}
+\expandafter\def\csname devicon@julia-plain-wordmark\endcsname { \symbol{"E9DB}} \def\diJuliaPlainWordmark {{\DI\csname devicon@julia-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@julia-plain\endcsname { \symbol{"E9DC}} \def\diJuliaPlain {{\DI\csname devicon@julia-plain\endcsname}}
+\expandafter\def\csname devicon@crystal-original-wordmark\endcsname { \symbol{"E9DD}} \def\diCrystalOriginalWordmark {{\DI\csname devicon@crystal-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@crystal-original\endcsname { \symbol{"E9DE}} \def\diCrystalOriginal {{\DI\csname devicon@crystal-original\endcsname}}
+\expandafter\def\csname devicon@tailwindcss-plain\endcsname { \symbol{"E9DF}} \def\diTailwindcssPlain {{\DI\csname devicon@tailwindcss-plain\endcsname}}
+\expandafter\def\csname devicon@tailwindcss-original-wordmark\endcsname { \symbol{"E9E0}} \def\diTailwindcssOriginalWordmark {{\DI\csname devicon@tailwindcss-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@weblate-plain-wordmark\endcsname { \symbol{"E999}} \def\diWeblatePlainWordmark {{\DI\csname devicon@weblate-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@weblate-plain\endcsname { \symbol{"E99A}} \def\diWeblatePlain {{\DI\csname devicon@weblate-plain\endcsname}}
+\expandafter\def\csname devicon@thealgorithms-plain-wordmark\endcsname { \symbol{"E99B}} \def\diThealgorithmsPlainWordmark {{\DI\csname devicon@thealgorithms-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@thealgorithms-plain\endcsname { \symbol{"E99C}} \def\diThealgorithmsPlain {{\DI\csname devicon@thealgorithms-plain\endcsname}}
+\expandafter\def\csname devicon@spring-plain-wordmark\endcsname { \symbol{"E99D}} \def\diSpringPlainWordmark {{\DI\csname devicon@spring-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@spring-plain\endcsname { \symbol{"E99E}} \def\diSpringPlain {{\DI\csname devicon@spring-plain\endcsname}}
+\expandafter\def\csname devicon@rails-plain-wordmark\endcsname { \symbol{"E99F}} \def\diRailsPlainWordmark {{\DI\csname devicon@rails-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@rails-plain\endcsname { \symbol{"E9A0}} \def\diRailsPlain {{\DI\csname devicon@rails-plain\endcsname}}
+\expandafter\def\csname devicon@phoenix-plain-wordmark\endcsname { \symbol{"E9A1}} \def\diPhoenixPlainWordmark {{\DI\csname devicon@phoenix-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@phoenix-plain\endcsname { \symbol{"E9A2}} \def\diPhoenixPlain {{\DI\csname devicon@phoenix-plain\endcsname}}
+\expandafter\def\csname devicon@nextjs-original-wordmark\endcsname { \symbol{"E9A3}} \def\diNextjsOriginalWordmark {{\DI\csname devicon@nextjs-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@nextjs-line\endcsname { \symbol{"E9A4}} \def\diNextjsLine {{\DI\csname devicon@nextjs-line\endcsname}}
+\expandafter\def\csname devicon@nextjs-original\endcsname { \symbol{"E9A5}} \def\diNextjsOriginal {{\DI\csname devicon@nextjs-original\endcsname}}
+\expandafter\def\csname devicon@lua-plain-wordmark\endcsname { \symbol{"E9A6}} \def\diLuaPlainWordmark {{\DI\csname devicon@lua-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@lua-plain\endcsname { \symbol{"E9A7}} \def\diLuaPlain {{\DI\csname devicon@lua-plain\endcsname}}
+\expandafter\def\csname devicon@graphql-plain-wordmark\endcsname { \symbol{"E9A8}} \def\diGraphqlPlainWordmark {{\DI\csname devicon@graphql-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@graphql-plain\endcsname { \symbol{"E9A9}} \def\diGraphqlPlain {{\DI\csname devicon@graphql-plain\endcsname}}
+\expandafter\def\csname devicon@gitter-plain-wordmark\endcsname { \symbol{"E9AA}} \def\diGitterPlainWordmark {{\DI\csname devicon@gitter-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@gitter-plain\endcsname { \symbol{"E9AB}} \def\diGitterPlain {{\DI\csname devicon@gitter-plain\endcsname}}
+\expandafter\def\csname devicon@figma-plain\endcsname { \symbol{"E9AC}} \def\diFigmaPlain {{\DI\csname devicon@figma-plain\endcsname}}
+\expandafter\def\csname devicon@digitalocean-plain-wordmark\endcsname { \symbol{"E9AD}} \def\diDigitaloceanPlainWordmark {{\DI\csname devicon@digitalocean-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@digitalocean-plain\endcsname { \symbol{"E9AE}} \def\diDigitaloceanPlain {{\DI\csname devicon@digitalocean-plain\endcsname}}
+\expandafter\def\csname devicon@dotnetcore-plain\endcsname { \symbol{"E9AF}} \def\diDotnetcorePlain {{\DI\csname devicon@dotnetcore-plain\endcsname}}
+\expandafter\def\csname devicon@dart-plain-wordmark\endcsname { \symbol{"E9B0}} \def\diDartPlainWordmark {{\DI\csname devicon@dart-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@dart-plain\endcsname { \symbol{"E9B1}} \def\diDartPlain {{\DI\csname devicon@dart-plain\endcsname}}
+\expandafter\def\csname devicon@r-plain\endcsname { \symbol{"E98E}} \def\diRPlain {{\DI\csname devicon@r-plain\endcsname}}
+\expandafter\def\csname devicon@r-original\endcsname { \symbol{"E98F}} \def\diROriginal {{\DI\csname devicon@r-original\endcsname}}
+\expandafter\def\csname devicon@ocaml-plain-wordmark\endcsname { \symbol{"E990}} \def\diOcamlPlainWordmark {{\DI\csname devicon@ocaml-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@ocaml-plain\endcsname { \symbol{"E991}} \def\diOcamlPlain {{\DI\csname devicon@ocaml-plain\endcsname}}
+\expandafter\def\csname devicon@jupyter-plain-wordmark\endcsname { \symbol{"E993}} \def\diJupyterPlainWordmark {{\DI\csname devicon@jupyter-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@jupyter-plain\endcsname { \symbol{"E994}} \def\diJupyterPlain {{\DI\csname devicon@jupyter-plain\endcsname}}
+\expandafter\def\csname devicon@fsharp-plain\endcsname { \symbol{"E995}} \def\diFsharpPlain {{\DI\csname devicon@fsharp-plain\endcsname}}
+\expandafter\def\csname devicon@elixir-plain-wordmark\endcsname { \symbol{"E996}} \def\diElixirPlainWordmark {{\DI\csname devicon@elixir-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@elixir-plain\endcsname { \symbol{"E997}} \def\diElixirPlain {{\DI\csname devicon@elixir-plain\endcsname}}
+\expandafter\def\csname devicon@aarch64-plain\endcsname { \symbol{"E998}} \def\diAarchPlain {{\DI\csname devicon@aarch64-plain\endcsname}}
+\expandafter\def\csname devicon@xd-line\endcsname { \symbol{"E97A}} \def\diXdLine {{\DI\csname devicon@xd-line\endcsname}}
+\expandafter\def\csname devicon@xd-plain\endcsname { \symbol{"E97B}} \def\diXdPlain {{\DI\csname devicon@xd-plain\endcsname}}
+\expandafter\def\csname devicon@uwsgi-plain\endcsname { \symbol{"E97C}} \def\diUwsgiPlain {{\DI\csname devicon@uwsgi-plain\endcsname}}
+\expandafter\def\csname devicon@microsoftsqlserver-plain-wordmark\endcsname { \symbol{"E97D}} \def\diMicrosoftsqlserverPlainWordmark {{\DI\csname devicon@microsoftsqlserver-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@microsoftsqlserver-plain\endcsname { \symbol{"E97E}} \def\diMicrosoftsqlserverPlain {{\DI\csname devicon@microsoftsqlserver-plain\endcsname}}
+\expandafter\def\csname devicon@sqlalchemy-original-wordmark\endcsname { \symbol{"E97F}} \def\diSqlalchemyOriginalWordmark {{\DI\csname devicon@sqlalchemy-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@sqlalchemy-plain\endcsname { \symbol{"E980}} \def\diSqlalchemyPlain {{\DI\csname devicon@sqlalchemy-plain\endcsname}}
+\expandafter\def\csname devicon@rocksdb-plain\endcsname { \symbol{"E981}} \def\diRocksdbPlain {{\DI\csname devicon@rocksdb-plain\endcsname}}
+\expandafter\def\csname devicon@objectivec-plain\endcsname { \symbol{"E982}} \def\diObjectivecPlain {{\DI\csname devicon@objectivec-plain\endcsname}}
+\expandafter\def\csname devicon@kubernetes-plain-wordmark\endcsname { \symbol{"E983}} \def\diKubernetesPlainWordmark {{\DI\csname devicon@kubernetes-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@kubernetes-plain\endcsname { \symbol{"E984}} \def\diKubernetesPlain {{\DI\csname devicon@kubernetes-plain\endcsname}}
+\expandafter\def\csname devicon@googlecloud-plain-wordmark\endcsname { \symbol{"E985}} \def\diGooglecloudPlainWordmark {{\DI\csname devicon@googlecloud-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@googlecloud-plain\endcsname { \symbol{"E986}} \def\diGooglecloudPlain {{\DI\csname devicon@googlecloud-plain\endcsname}}
+\expandafter\def\csname devicon@flask-original-wordmark\endcsname { \symbol{"E987}} \def\diFlaskOriginalWordmark {{\DI\csname devicon@flask-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@flask-original\endcsname { \symbol{"E988}} \def\diFlaskOriginal {{\DI\csname devicon@flask-original\endcsname}}
+\expandafter\def\csname devicon@firebase-plain-wordmark\endcsname { \symbol{"E989}} \def\diFirebasePlainWordmark {{\DI\csname devicon@firebase-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@firebase-plain\endcsname { \symbol{"E98A}} \def\diFirebasePlain {{\DI\csname devicon@firebase-plain\endcsname}}
+\expandafter\def\csname devicon@eleventy-plain\endcsname { \symbol{"E98B}} \def\diEleventyPlain {{\DI\csname devicon@eleventy-plain\endcsname}}
+\expandafter\def\csname devicon@appwrite-plain-wordmark\endcsname { \symbol{"E98C}} \def\diAppwritePlainWordmark {{\DI\csname devicon@appwrite-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@appwrite-plain\endcsname { \symbol{"E98D}} \def\diAppwritePlain {{\DI\csname devicon@appwrite-plain\endcsname}}
+\expandafter\def\csname devicon@bash-plain\endcsname { \symbol{"E979}} \def\diBashPlain {{\DI\csname devicon@bash-plain\endcsname}}
+\expandafter\def\csname devicon@woocommerce-plain-wordmark\endcsname { \symbol{"E966}} \def\diWoocommercePlainWordmark {{\DI\csname devicon@woocommerce-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@woocommerce-plain\endcsname { \symbol{"E967}} \def\diWoocommercePlain {{\DI\csname devicon@woocommerce-plain\endcsname}}
+\expandafter\def\csname devicon@typo3-plain-wordmark\endcsname { \symbol{"E968}} \def\diTypoPlainWordmark {{\DI\csname devicon@typo3-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@typo3-plain\endcsname { \symbol{"E969}} \def\diTypoPlain {{\DI\csname devicon@typo3-plain\endcsname}}
+\expandafter\def\csname devicon@premierepro-plain\endcsname { \symbol{"E96A}} \def\diPremiereproPlain {{\DI\csname devicon@premierepro-plain\endcsname}}
+\expandafter\def\csname devicon@nestjs-plain-wordmark\endcsname { \symbol{"E96B}} \def\diNestjsPlainWordmark {{\DI\csname devicon@nestjs-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@nestjs-plain\endcsname { \symbol{"E96C}} \def\diNestjsPlain {{\DI\csname devicon@nestjs-plain\endcsname}}
+\expandafter\def\csname devicon@materialui-plain\endcsname { \symbol{"E96D}} \def\diMaterialuiPlain {{\DI\csname devicon@materialui-plain\endcsname}}
+\expandafter\def\csname devicon@kotlin-plain-wordmark\endcsname { \symbol{"E96E}} \def\diKotlinPlainWordmark {{\DI\csname devicon@kotlin-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@kotlin-plain\endcsname { \symbol{"E96F}} \def\diKotlinPlain {{\DI\csname devicon@kotlin-plain\endcsname}}
+\expandafter\def\csname devicon@jenkins-plain\endcsname { \symbol{"E970}} \def\diJenkinsPlain {{\DI\csname devicon@jenkins-plain\endcsname}}
+\expandafter\def\csname devicon@jenkins-line\endcsname { \symbol{"E971}} \def\diJenkinsLine {{\DI\csname devicon@jenkins-line\endcsname}}
+\expandafter\def\csname devicon@haxe-plain\endcsname { \symbol{"E972}} \def\diHaxePlain {{\DI\csname devicon@haxe-plain\endcsname}}
+\expandafter\def\csname devicon@gatsby-plain-wordmark\endcsname { \symbol{"E973}} \def\diGatsbyPlainWordmark {{\DI\csname devicon@gatsby-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@gatsby-plain\endcsname { \symbol{"E974}} \def\diGatsbyPlain {{\DI\csname devicon@gatsby-plain\endcsname}}
+\expandafter\def\csname devicon@flutter-plain\endcsname { \symbol{"E975}} \def\diFlutterPlain {{\DI\csname devicon@flutter-plain\endcsname}}
+\expandafter\def\csname devicon@composer-line-wordmark\endcsname { \symbol{"E976}} \def\diComposerLineWordmark {{\DI\csname devicon@composer-line-wordmark\endcsname}}
+\expandafter\def\csname devicon@composer-line\endcsname { \symbol{"E977}} \def\diComposerLine {{\DI\csname devicon@composer-line\endcsname}}
+\expandafter\def\csname devicon@aftereffects-plain\endcsname { \symbol{"E978}} \def\diAftereffectsPlain {{\DI\csname devicon@aftereffects-plain\endcsname}}
+\expandafter\def\csname devicon@yunohost-plain\endcsname { \symbol{"E963}} \def\diYunohostPlain {{\DI\csname devicon@yunohost-plain\endcsname}}
+\expandafter\def\csname devicon@redux-original\endcsname { \symbol{"E964}} \def\diReduxOriginal {{\DI\csname devicon@redux-original\endcsname}}
+\expandafter\def\csname devicon@clojure-line\endcsname { \symbol{"E962}} \def\diClojureLine {{\DI\csname devicon@clojure-line\endcsname}}
+\expandafter\def\csname devicon@mocha-plain\endcsname { \symbol{"E961}} \def\diMochaPlain {{\DI\csname devicon@mocha-plain\endcsname}}
+\expandafter\def\csname devicon@haskell-plain\endcsname { \symbol{"E95F}} \def\diHaskellPlain {{\DI\csname devicon@haskell-plain\endcsname}}
+\expandafter\def\csname devicon@haskell-plain-wordmark\endcsname { \symbol{"E960}} \def\diHaskellPlainWordmark {{\DI\csname devicon@haskell-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@codepen-original-wordmark\endcsname { \symbol{"E95D}} \def\diCodepenOriginalWordmark {{\DI\csname devicon@codepen-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@codepen-plain\endcsname { \symbol{"E95E}} \def\diCodepenPlain {{\DI\csname devicon@codepen-plain\endcsname}}
+\expandafter\def\csname devicon@groovy-plain\endcsname { \symbol{"E958}} \def\diGroovyPlain {{\DI\csname devicon@groovy-plain\endcsname}}
+\expandafter\def\csname devicon@rust-plain\endcsname { \symbol{"E959}} \def\diRustPlain {{\DI\csname devicon@rust-plain\endcsname}}
+\expandafter\def\csname devicon@scala-plain-wordmark\endcsname { \symbol{"E95A}} \def\diScalaPlainWordmark {{\DI\csname devicon@scala-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@scala-plain\endcsname { \symbol{"E95B}} \def\diScalaPlain {{\DI\csname devicon@scala-plain\endcsname}}
+\expandafter\def\csname devicon@grails-plain\endcsname { \symbol{"E95C}} \def\diGrailsPlain {{\DI\csname devicon@grails-plain\endcsname}}
+\expandafter\def\csname devicon@sketch-line-wordmark\endcsname { \symbol{"E94C}} \def\diSketchLineWordmark {{\DI\csname devicon@sketch-line-wordmark\endcsname}}
+\expandafter\def\csname devicon@sketch-line\endcsname { \symbol{"E94D}} \def\diSketchLine {{\DI\csname devicon@sketch-line\endcsname}}
+\expandafter\def\csname devicon@npm-original-wordmark\endcsname { \symbol{"E952}} \def\diNpmOriginalWordmark {{\DI\csname devicon@npm-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@ionic-original-wordmark\endcsname { \symbol{"E953}} \def\diIonicOriginalWordmark {{\DI\csname devicon@ionic-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@ionic-original\endcsname { \symbol{"E954}} \def\diIonicOriginal {{\DI\csname devicon@ionic-original\endcsname}}
+\expandafter\def\csname devicon@ember-original-wordmark\endcsname { \symbol{"E955}} \def\diEmberOriginalWordmark {{\DI\csname devicon@ember-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@electron-original-wordmark\endcsname { \symbol{"E956}} \def\diElectronOriginalWordmark {{\DI\csname devicon@electron-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@electron-original\endcsname { \symbol{"E957}} \def\diElectronOriginal {{\DI\csname devicon@electron-original\endcsname}}
+\expandafter\def\csname devicon@vagrant-plain-wordmark\endcsname { \symbol{"E94E}} \def\diVagrantPlainWordmark {{\DI\csname devicon@vagrant-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@vagrant-plain\endcsname { \symbol{"E94F}} \def\diVagrantPlain {{\DI\csname devicon@vagrant-plain\endcsname}}
+\expandafter\def\csname devicon@yarn-plain-wordmark\endcsname { \symbol{"E950}} \def\diYarnPlainWordmark {{\DI\csname devicon@yarn-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@yarn-plain\endcsname { \symbol{"E951}} \def\diYarnPlain {{\DI\csname devicon@yarn-plain\endcsname}}
+\expandafter\def\csname devicon@handlebars-plain-wordmark\endcsname { \symbol{"E94A}} \def\diHandlebarsPlainWordmark {{\DI\csname devicon@handlebars-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@handlebars-plain\endcsname { \symbol{"E94B}} \def\diHandlebarsPlain {{\DI\csname devicon@handlebars-plain\endcsname}}
+\expandafter\def\csname devicon@couchdb-plain-wordmark\endcsname { \symbol{"E948}} \def\diCouchdbPlainWordmark {{\DI\csname devicon@couchdb-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@couchdb-plain\endcsname { \symbol{"E949}} \def\diCouchdbPlain {{\DI\csname devicon@couchdb-plain\endcsname}}
+\expandafter\def\csname devicon@behance-plain-wordmark\endcsname { \symbol{"E943}} \def\diBehancePlainWordmark {{\DI\csname devicon@behance-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@behance-plain\endcsname { \symbol{"E945}} \def\diBehancePlain {{\DI\csname devicon@behance-plain\endcsname}}
+\expandafter\def\csname devicon@linkedin-plain-wordmark\endcsname { \symbol{"E946}} \def\diLinkedinPlainWordmark {{\DI\csname devicon@linkedin-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@linkedin-plain\endcsname { \symbol{"E947}} \def\diLinkedinPlain {{\DI\csname devicon@linkedin-plain\endcsname}}
+\expandafter\def\csname devicon@ceylon-plain\endcsname { \symbol{"E944}} \def\diCeylonPlain {{\DI\csname devicon@ceylon-plain\endcsname}}
+\expandafter\def\csname devicon@elm-plain-wordmark\endcsname { \symbol{"E965}} \def\diElmPlainWordmark {{\DI\csname devicon@elm-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@elm-plain\endcsname { \symbol{"E9C8}} \def\diElmPlain {{\DI\csname devicon@elm-plain\endcsname}}
+\expandafter\def\csname devicon@cakephp-plain-wordmark\endcsname { \symbol{"E9C9}} \def\diCakephpPlainWordmark {{\DI\csname devicon@cakephp-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@cakephp-plain\endcsname { \symbol{"E9E1}} \def\diCakephpPlain {{\DI\csname devicon@cakephp-plain\endcsname}}
+\expandafter\def\csname devicon@stylus-original\endcsname { \symbol{"E9E2}} \def\diStylusOriginal {{\DI\csname devicon@stylus-original\endcsname}}
+\expandafter\def\csname devicon@express-original-wordmark\endcsname { \symbol{"E9E3}} \def\diExpressOriginalWordmark {{\DI\csname devicon@express-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@express-original\endcsname { \symbol{"E9E4}} \def\diExpressOriginal {{\DI\csname devicon@express-original\endcsname}}
+\expandafter\def\csname devicon@intellij-plain-wordmark\endcsname { \symbol{"E9E5}} \def\diIntellijPlainWordmark {{\DI\csname devicon@intellij-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@intellij-plain\endcsname { \symbol{"E9E6}} \def\diIntellijPlain {{\DI\csname devicon@intellij-plain\endcsname}}
+\expandafter\def\csname devicon@pycharm-plain-wordmark\endcsname { \symbol{"E9E7}} \def\diPycharmPlainWordmark {{\DI\csname devicon@pycharm-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@pycharm-plain\endcsname { \symbol{"E9E8}} \def\diPycharmPlain {{\DI\csname devicon@pycharm-plain\endcsname}}
+\expandafter\def\csname devicon@rubymine-plain-wordmark\endcsname { \symbol{"E9E9}} \def\diRubyminePlainWordmark {{\DI\csname devicon@rubymine-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@rubymine-plain\endcsname { \symbol{"E9EA}} \def\diRubyminePlain {{\DI\csname devicon@rubymine-plain\endcsname}}
+\expandafter\def\csname devicon@webstorm-plain-wordmark\endcsname { \symbol{"E9EB}} \def\diWebstormPlainWordmark {{\DI\csname devicon@webstorm-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@webstorm-plain\endcsname { \symbol{"E9EC}} \def\diWebstormPlain {{\DI\csname devicon@webstorm-plain\endcsname}}
+\expandafter\def\csname devicon@tomcat-line-wordmark\endcsname { \symbol{"E9ED}} \def\diTomcatLineWordmark {{\DI\csname devicon@tomcat-line-wordmark\endcsname}}
+\expandafter\def\csname devicon@tomcat-line\endcsname { \symbol{"E9EE}} \def\diTomcatLine {{\DI\csname devicon@tomcat-line\endcsname}}
+\expandafter\def\csname devicon@vuejs-line-wordmark\endcsname { \symbol{"E9EF}} \def\diVuejsLineWordmark {{\DI\csname devicon@vuejs-line-wordmark\endcsname}}
+\expandafter\def\csname devicon@vuejs-line\endcsname { \symbol{"E9F0}} \def\diVuejsLine {{\DI\csname devicon@vuejs-line\endcsname}}
+\expandafter\def\csname devicon@vuejs-plain-wordmark\endcsname { \symbol{"E9F1}} \def\diVuejsPlainWordmark {{\DI\csname devicon@vuejs-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@vuejs-plain\endcsname { \symbol{"E9F2}} \def\diVuejsPlain {{\DI\csname devicon@vuejs-plain\endcsname}}
+\expandafter\def\csname devicon@swift-plain-wordmark\endcsname { \symbol{"E9F3}} \def\diSwiftPlainWordmark {{\DI\csname devicon@swift-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@swift-plain\endcsname { \symbol{"E9F4}} \def\diSwiftPlain {{\DI\csname devicon@swift-plain\endcsname}}
+\expandafter\def\csname devicon@webpack-plain-wordmark\endcsname { \symbol{"E9F5}} \def\diWebpackPlainWordmark {{\DI\csname devicon@webpack-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@webpack-plain\endcsname { \symbol{"E9F6}} \def\diWebpackPlain {{\DI\csname devicon@webpack-plain\endcsname}}
+\expandafter\def\csname devicon@visualstudio-plain-wordmark\endcsname { \symbol{"E9F7}} \def\diVisualstudioPlainWordmark {{\DI\csname devicon@visualstudio-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@visualstudio-plain\endcsname { \symbol{"E9F8}} \def\diVisualstudioPlain {{\DI\csname devicon@visualstudio-plain\endcsname}}
+\expandafter\def\csname devicon@sequelize-plain-wordmark\endcsname { \symbol{"E9F9}} \def\diSequelizePlainWordmark {{\DI\csname devicon@sequelize-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@sequelize-plain\endcsname { \symbol{"E9FA}} \def\diSequelizePlain {{\DI\csname devicon@sequelize-plain\endcsname}}
+\expandafter\def\csname devicon@typescript-plain\endcsname { \symbol{"E9FB}} \def\diTypescriptPlain {{\DI\csname devicon@typescript-plain\endcsname}}
+\expandafter\def\csname devicon@babel-plain\endcsname { \symbol{"E9FC}} \def\diBabelPlain {{\DI\csname devicon@babel-plain\endcsname}}
+\expandafter\def\csname devicon@facebook-plain\endcsname { \symbol{"E9FD}} \def\diFacebookPlain {{\DI\csname devicon@facebook-plain\endcsname}}
+\expandafter\def\csname devicon@google-plain-wordmark\endcsname { \symbol{"E9FE}} \def\diGooglePlainWordmark {{\DI\csname devicon@google-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@google-plain\endcsname { \symbol{"E9FF}} \def\diGooglePlain {{\DI\csname devicon@google-plain\endcsname}}
+\expandafter\def\csname devicon@twitter-original\endcsname { \symbol{"EA00}} \def\diTwitterOriginal {{\DI\csname devicon@twitter-original\endcsname}}
+\expandafter\def\csname devicon@mocha\endcsname { \symbol{"EA01}} \def\diMocha {{\DI\csname devicon@mocha\endcsname}}
+\expandafter\def\csname devicon@jasmine-plain\endcsname { \symbol{"EA02}} \def\diJasminePlain {{\DI\csname devicon@jasmine-plain\endcsname}}
+\expandafter\def\csname devicon@jasmine-wordmark\endcsname { \symbol{"EA03}} \def\diJasmineWordmark {{\DI\csname devicon@jasmine-wordmark\endcsname}}
+\expandafter\def\csname devicon@gatling-plain\endcsname { \symbol{"EA04}} \def\diGatlingPlain {{\DI\csname devicon@gatling-plain\endcsname}}
+\expandafter\def\csname devicon@gatling-plain-wordmark\endcsname { \symbol{"EA05}} \def\diGatlingPlainWordmark {{\DI\csname devicon@gatling-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@phpstorm-plain\endcsname { \symbol{"EA06}} \def\diPhpstormPlain {{\DI\csname devicon@phpstorm-plain\endcsname}}
+\expandafter\def\csname devicon@phpstorm-plain-wordmark\endcsname { \symbol{"EA07}} \def\diPhpstormPlainWordmark {{\DI\csname devicon@phpstorm-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@sourcetree-original\endcsname { \symbol{"EA08}} \def\diSourcetreeOriginal {{\DI\csname devicon@sourcetree-original\endcsname}}
+\expandafter\def\csname devicon@sourcetree-original-wordmark\endcsname { \symbol{"EA09}} \def\diSourcetreeOriginalWordmark {{\DI\csname devicon@sourcetree-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@ssh-original\endcsname { \symbol{"EA0A}} \def\diSshOriginal {{\DI\csname devicon@ssh-original\endcsname}}
+\expandafter\def\csname devicon@ssh-original-wordmark\endcsname { \symbol{"EA0B}} \def\diSshOriginalWordmark {{\DI\csname devicon@ssh-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@jeet-plain\endcsname { \symbol{"EA0C}} \def\diJeetPlain {{\DI\csname devicon@jeet-plain\endcsname}}
+\expandafter\def\csname devicon@jeet-plain-wordmark\endcsname { \symbol{"EA0D}} \def\diJeetPlainWordmark {{\DI\csname devicon@jeet-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@gitlab-plain\endcsname { \symbol{"EA0E}} \def\diGitlabPlain {{\DI\csname devicon@gitlab-plain\endcsname}}
+\expandafter\def\csname devicon@gitlab-plain-wordmark\endcsname { \symbol{"EA0F}} \def\diGitlabPlainWordmark {{\DI\csname devicon@gitlab-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@github-original\endcsname { \symbol{"EA10}} \def\diGithubOriginal {{\DI\csname devicon@github-original\endcsname}}
+\expandafter\def\csname devicon@github-original-wordmark\endcsname { \symbol{"EA11}} \def\diGithubOriginalWordmark {{\DI\csname devicon@github-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@d3js-plain\endcsname { \symbol{"EA12}} \def\diDJsPlain {{\DI\csname devicon@d3js-plain\endcsname}}
+\expandafter\def\csname devicon@d3js-original\endcsname { \symbol{"EA13}} \def\diDJsOriginal {{\DI\csname devicon@d3js-original\endcsname}}
+\expandafter\def\csname devicon@confluence-original\endcsname { \symbol{"EA14}} \def\diConfluenceOriginal {{\DI\csname devicon@confluence-original\endcsname}}
+\expandafter\def\csname devicon@confluence-original-wordmark\endcsname { \symbol{"EA15}} \def\diConfluenceOriginalWordmark {{\DI\csname devicon@confluence-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@bitbucket-original\endcsname { \symbol{"EA16}} \def\diBitbucketOriginal {{\DI\csname devicon@bitbucket-original\endcsname}}
+\expandafter\def\csname devicon@bitbucket-original-wordmark\endcsname { \symbol{"EA17}} \def\diBitbucketOriginalWordmark {{\DI\csname devicon@bitbucket-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@gradle-plain\endcsname { \symbol{"EA18}} \def\diGradlePlain {{\DI\csname devicon@gradle-plain\endcsname}}
+\expandafter\def\csname devicon@gradle-plain-wordmark\endcsname { \symbol{"E8F1}} \def\diGradlePlainWordmark {{\DI\csname devicon@gradle-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@cucumber-plain\endcsname { \symbol{"EA19}} \def\diCucumberPlain {{\DI\csname devicon@cucumber-plain\endcsname}}
+\expandafter\def\csname devicon@cucumber-plain-wordmark\endcsname { \symbol{"EA1A}} \def\diCucumberPlainWordmark {{\DI\csname devicon@cucumber-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@protractor-plain\endcsname { \symbol{"EA1B}} \def\diProtractorPlain {{\DI\csname devicon@protractor-plain\endcsname}}
+\expandafter\def\csname devicon@protractor-plain-wordmark\endcsname { \symbol{"EA1C}} \def\diProtractorPlainWordmark {{\DI\csname devicon@protractor-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@safari-line-wordmark\endcsname { \symbol{"E632}} \def\diSafariLineWordmark {{\DI\csname devicon@safari-line-wordmark\endcsname}}
+\expandafter\def\csname devicon@safari-line\endcsname { \symbol{"E63A}} \def\diSafariLine {{\DI\csname devicon@safari-line\endcsname}}
+\expandafter\def\csname devicon@safari-plain-wordmark\endcsname { \symbol{"E63B}} \def\diSafariPlainWordmark {{\DI\csname devicon@safari-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@safari-plain\endcsname { \symbol{"E63C}} \def\diSafariPlain {{\DI\csname devicon@safari-plain\endcsname}}
+\expandafter\def\csname devicon@jetbrains-plain\endcsname { \symbol{"E63D}} \def\diJetbrainsPlain {{\DI\csname devicon@jetbrains-plain\endcsname}}
+\expandafter\def\csname devicon@django-line\endcsname { \symbol{"E63E}} \def\diDjangoLine {{\DI\csname devicon@django-line\endcsname}}
+\expandafter\def\csname devicon@django-plain\endcsname { \symbol{"E63F}} \def\diDjangoPlain {{\DI\csname devicon@django-plain\endcsname}}
+\expandafter\def\csname devicon@gimp-plain\endcsname { \symbol{"E633}} \def\diGimpPlain {{\DI\csname devicon@gimp-plain\endcsname}}
+\expandafter\def\csname devicon@redhat-plain-wordmark\endcsname { \symbol{"E62A}} \def\diRedhatPlainWordmark {{\DI\csname devicon@redhat-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@redhat-plain\endcsname { \symbol{"E62B}} \def\diRedhatPlain {{\DI\csname devicon@redhat-plain\endcsname}}
+\expandafter\def\csname devicon@cplusplus-line\endcsname { \symbol{"E634}} \def\diCplusplusLine {{\DI\csname devicon@cplusplus-line\endcsname}}
+\expandafter\def\csname devicon@cplusplus-plain\endcsname { \symbol{"E635}} \def\diCplusplusPlain {{\DI\csname devicon@cplusplus-plain\endcsname}}
+\expandafter\def\csname devicon@csharp-line\endcsname { \symbol{"E636}} \def\diCsharpLine {{\DI\csname devicon@csharp-line\endcsname}}
+\expandafter\def\csname devicon@csharp-plain\endcsname { \symbol{"E637}} \def\diCsharpPlain {{\DI\csname devicon@csharp-plain\endcsname}}
+\expandafter\def\csname devicon@c-line\endcsname { \symbol{"E638}} \def\diCLine {{\DI\csname devicon@c-line\endcsname}}
+\expandafter\def\csname devicon@c-plain\endcsname { \symbol{"E639}} \def\diCPlain {{\DI\csname devicon@c-plain\endcsname}}
+\expandafter\def\csname devicon@nodewebkit-line-wordmark\endcsname { \symbol{"E611}} \def\diNodewebkitLineWordmark {{\DI\csname devicon@nodewebkit-line-wordmark\endcsname}}
+\expandafter\def\csname devicon@nodewebkit-line\endcsname { \symbol{"E612}} \def\diNodewebkitLine {{\DI\csname devicon@nodewebkit-line\endcsname}}
+\expandafter\def\csname devicon@nodewebkit-plain-wordmark\endcsname { \symbol{"E613}} \def\diNodewebkitPlainWordmark {{\DI\csname devicon@nodewebkit-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@nodewebkit-plain\endcsname { \symbol{"E614}} \def\diNodewebkitPlain {{\DI\csname devicon@nodewebkit-plain\endcsname}}
+\expandafter\def\csname devicon@nginx-original\endcsname { \symbol{"E615}} \def\diNginxOriginal {{\DI\csname devicon@nginx-original\endcsname}}
+\expandafter\def\csname devicon@erlang-plain-wordmark\endcsname { \symbol{"E616}} \def\diErlangPlainWordmark {{\DI\csname devicon@erlang-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@erlang-plain\endcsname { \symbol{"E617}} \def\diErlangPlain {{\DI\csname devicon@erlang-plain\endcsname}}
+\expandafter\def\csname devicon@doctrine-line-wordmark\endcsname { \symbol{"E618}} \def\diDoctrineLineWordmark {{\DI\csname devicon@doctrine-line-wordmark\endcsname}}
+\expandafter\def\csname devicon@doctrine-line\endcsname { \symbol{"E619}} \def\diDoctrineLine {{\DI\csname devicon@doctrine-line\endcsname}}
+\expandafter\def\csname devicon@doctrine-plain-wordmark\endcsname { \symbol{"E61A}} \def\diDoctrinePlainWordmark {{\DI\csname devicon@doctrine-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@doctrine-plain\endcsname { \symbol{"E625}} \def\diDoctrinePlain {{\DI\csname devicon@doctrine-plain\endcsname}}
+\expandafter\def\csname devicon@apache-line-wordmark\endcsname { \symbol{"E626}} \def\diApacheLineWordmark {{\DI\csname devicon@apache-line-wordmark\endcsname}}
+\expandafter\def\csname devicon@apache-line\endcsname { \symbol{"E627}} \def\diApacheLine {{\DI\csname devicon@apache-line\endcsname}}
+\expandafter\def\csname devicon@apache-plain-wordmark\endcsname { \symbol{"E628}} \def\diApachePlainWordmark {{\DI\csname devicon@apache-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@apache-plain\endcsname { \symbol{"E629}} \def\diApachePlain {{\DI\csname devicon@apache-plain\endcsname}}
+\expandafter\def\csname devicon@redis-plain-wordmark\endcsname { \symbol{"E606}} \def\diRedisPlainWordmark {{\DI\csname devicon@redis-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@redis-plain\endcsname { \symbol{"E607}} \def\diRedisPlain {{\DI\csname devicon@redis-plain\endcsname}}
+\expandafter\def\csname devicon@meteor-plain-wordmark\endcsname { \symbol{"E608}} \def\diMeteorPlainWordmark {{\DI\csname devicon@meteor-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@meteor-plain\endcsname { \symbol{"E609}} \def\diMeteorPlain {{\DI\csname devicon@meteor-plain\endcsname}}
+\expandafter\def\csname devicon@heroku-line-wordmark\endcsname { \symbol{"E60A}} \def\diHerokuLineWordmark {{\DI\csname devicon@heroku-line-wordmark\endcsname}}
+\expandafter\def\csname devicon@heroku-line\endcsname { \symbol{"E60B}} \def\diHerokuLine {{\DI\csname devicon@heroku-line\endcsname}}
+\expandafter\def\csname devicon@heroku-plain-wordmark\endcsname { \symbol{"E60C}} \def\diHerokuPlainWordmark {{\DI\csname devicon@heroku-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@heroku-plain\endcsname { \symbol{"E60F}} \def\diHerokuPlain {{\DI\csname devicon@heroku-plain\endcsname}}
+\expandafter\def\csname devicon@docker-plain-wordmark\endcsname { \symbol{"E61E}} \def\diDockerPlainWordmark {{\DI\csname devicon@docker-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@docker-plain\endcsname { \symbol{"E61F}} \def\diDockerPlain {{\DI\csname devicon@docker-plain\endcsname}}
+\expandafter\def\csname devicon@symfony-original-wordmark\endcsname { \symbol{"E602}} \def\diSymfonyOriginalWordmark {{\DI\csname devicon@symfony-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@symfony-original\endcsname { \symbol{"E605}} \def\diSymfonyOriginal {{\DI\csname devicon@symfony-original\endcsname}}
+\expandafter\def\csname devicon@react-original-wordmark\endcsname { \symbol{"E600}} \def\diReactOriginalWordmark {{\DI\csname devicon@react-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@react-original\endcsname { \symbol{"E601}} \def\diReactOriginal {{\DI\csname devicon@react-original\endcsname}}
+\expandafter\def\csname devicon@amazonwebservices-original\endcsname { \symbol{"E603}} \def\diAmazonwebservicesOriginal {{\DI\csname devicon@amazonwebservices-original\endcsname}}
+\expandafter\def\csname devicon@amazonwebservices-plain-wordmark\endcsname { \symbol{"E604}} \def\diAmazonwebservicesPlainWordmark {{\DI\csname devicon@amazonwebservices-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@android-plain-wordmark\endcsname { \symbol{"E60D}} \def\diAndroidPlainWordmark {{\DI\csname devicon@android-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@android-plain\endcsname { \symbol{"E60E}} \def\diAndroidPlain {{\DI\csname devicon@android-plain\endcsname}}
+\expandafter\def\csname devicon@angularjs-plain-wordmark\endcsname { \symbol{"E61C}} \def\diAngularjsPlainWordmark {{\DI\csname devicon@angularjs-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@angularjs-plain\endcsname { \symbol{"E61D}} \def\diAngularjsPlain {{\DI\csname devicon@angularjs-plain\endcsname}}
+\expandafter\def\csname devicon@appcelerator-original\endcsname { \symbol{"E620}} \def\diAppceleratorOriginal {{\DI\csname devicon@appcelerator-original\endcsname}}
+\expandafter\def\csname devicon@appcelerator-plain-wordmark\endcsname { \symbol{"E621}} \def\diAppceleratorPlainWordmark {{\DI\csname devicon@appcelerator-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@apple-original\endcsname { \symbol{"E622}} \def\diAppleOriginal {{\DI\csname devicon@apple-original\endcsname}}
+\expandafter\def\csname devicon@atom-original-wordmark\endcsname { \symbol{"E623}} \def\diAtomOriginalWordmark {{\DI\csname devicon@atom-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@atom-original\endcsname { \symbol{"E624}} \def\diAtomOriginal {{\DI\csname devicon@atom-original\endcsname}}
+\expandafter\def\csname devicon@backbonejs-plain-wordmark\endcsname { \symbol{"E62C}} \def\diBackbonejsPlainWordmark {{\DI\csname devicon@backbonejs-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@backbonejs-plain\endcsname { \symbol{"E62D}} \def\diBackbonejsPlain {{\DI\csname devicon@backbonejs-plain\endcsname}}
+\expandafter\def\csname devicon@bower-line-wordmark\endcsname { \symbol{"E630}} \def\diBowerLineWordmark {{\DI\csname devicon@bower-line-wordmark\endcsname}}
+\expandafter\def\csname devicon@bower-line\endcsname { \symbol{"E631}} \def\diBowerLine {{\DI\csname devicon@bower-line\endcsname}}
+\expandafter\def\csname devicon@bower-plain-wordmark\endcsname { \symbol{"E64E}} \def\diBowerPlainWordmark {{\DI\csname devicon@bower-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@bower-plain\endcsname { \symbol{"E64F}} \def\diBowerPlain {{\DI\csname devicon@bower-plain\endcsname}}
+\expandafter\def\csname devicon@chrome-plain-wordmark\endcsname { \symbol{"E665}} \def\diChromePlainWordmark {{\DI\csname devicon@chrome-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@chrome-plain\endcsname { \symbol{"E666}} \def\diChromePlain {{\DI\csname devicon@chrome-plain\endcsname}}
+\expandafter\def\csname devicon@codeigniter-plain-wordmark\endcsname { \symbol{"E667}} \def\diCodeigniterPlainWordmark {{\DI\csname devicon@codeigniter-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@codeigniter-plain\endcsname { \symbol{"E668}} \def\diCodeigniterPlain {{\DI\csname devicon@codeigniter-plain\endcsname}}
+\expandafter\def\csname devicon@coffeescript-original-wordmark\endcsname { \symbol{"E669}} \def\diCoffeescriptOriginalWordmark {{\DI\csname devicon@coffeescript-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@coffeescript-original\endcsname { \symbol{"E66A}} \def\diCoffeescriptOriginal {{\DI\csname devicon@coffeescript-original\endcsname}}
+\expandafter\def\csname devicon@css3-plain-wordmark\endcsname { \symbol{"E678}} \def\diCssPlainWordmark {{\DI\csname devicon@css3-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@css3-plain\endcsname { \symbol{"E679}} \def\diCssPlain {{\DI\csname devicon@css3-plain\endcsname}}
+\expandafter\def\csname devicon@debian-plain-wordmark\endcsname { \symbol{"E67E}} \def\diDebianPlainWordmark {{\DI\csname devicon@debian-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@debian-plain\endcsname { \symbol{"E67F}} \def\diDebianPlain {{\DI\csname devicon@debian-plain\endcsname}}
+\expandafter\def\csname devicon@dot-net-plain-wordmark\endcsname { \symbol{"E6D3}} \def\diDotNetPlainWordmark {{\DI\csname devicon@dot-net-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@dot-net-plain\endcsname { \symbol{"E6D4}} \def\diDotNetPlain {{\DI\csname devicon@dot-net-plain\endcsname}}
+\expandafter\def\csname devicon@drupal-plain-wordmark\endcsname { \symbol{"E6E2}} \def\diDrupalPlainWordmark {{\DI\csname devicon@drupal-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@drupal-plain\endcsname { \symbol{"E6E3}} \def\diDrupalPlain {{\DI\csname devicon@drupal-plain\endcsname}}
+\expandafter\def\csname devicon@firefox-plain-wordmark\endcsname { \symbol{"E75D}} \def\diFirefoxPlainWordmark {{\DI\csname devicon@firefox-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@firefox-plain\endcsname { \symbol{"E75E}} \def\diFirefoxPlain {{\DI\csname devicon@firefox-plain\endcsname}}
+\expandafter\def\csname devicon@foundation-plain-wordmark\endcsname { \symbol{"E7A2}} \def\diFoundationPlainWordmark {{\DI\csname devicon@foundation-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@foundation-plain\endcsname { \symbol{"E7A3}} \def\diFoundationPlain {{\DI\csname devicon@foundation-plain\endcsname}}
+\expandafter\def\csname devicon@git-plain-wordmark\endcsname { \symbol{"E7A7}} \def\diGitPlainWordmark {{\DI\csname devicon@git-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@git-plain\endcsname { \symbol{"E7A8}} \def\diGitPlain {{\DI\csname devicon@git-plain\endcsname}}
+\expandafter\def\csname devicon@grunt-line-wordmark\endcsname { \symbol{"E7A9}} \def\diGruntLineWordmark {{\DI\csname devicon@grunt-line-wordmark\endcsname}}
+\expandafter\def\csname devicon@grunt-line\endcsname { \symbol{"E7AA}} \def\diGruntLine {{\DI\csname devicon@grunt-line\endcsname}}
+\expandafter\def\csname devicon@grunt-plain-wordmark\endcsname { \symbol{"E7EA}} \def\diGruntPlainWordmark {{\DI\csname devicon@grunt-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@grunt-plain\endcsname { \symbol{"E7EB}} \def\diGruntPlain {{\DI\csname devicon@grunt-plain\endcsname}}
+\expandafter\def\csname devicon@gulp-plain\endcsname { \symbol{"E7EC}} \def\diGulpPlain {{\DI\csname devicon@gulp-plain\endcsname}}
+\expandafter\def\csname devicon@html5-plain-wordmark\endcsname { \symbol{"E7F6}} \def\diHtmlPlainWordmark {{\DI\csname devicon@html5-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@html5-plain\endcsname { \symbol{"E7F7}} \def\diHtmlPlain {{\DI\csname devicon@html5-plain\endcsname}}
+\expandafter\def\csname devicon@ie10-original\endcsname { \symbol{"E7F8}} \def\diIeOriginal {{\DI\csname devicon@ie10-original\endcsname}}
+\expandafter\def\csname devicon@illustrator-line\endcsname { \symbol{"E7F9}} \def\diIllustratorLine {{\DI\csname devicon@illustrator-line\endcsname}}
+\expandafter\def\csname devicon@illustrator-plain\endcsname { \symbol{"E7FA}} \def\diIllustratorPlain {{\DI\csname devicon@illustrator-plain\endcsname}}
+\expandafter\def\csname devicon@inkscape-plain-wordmark\endcsname { \symbol{"E834}} \def\diInkscapePlainWordmark {{\DI\csname devicon@inkscape-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@inkscape-plain\endcsname { \symbol{"E835}} \def\diInkscapePlain {{\DI\csname devicon@inkscape-plain\endcsname}}
+\expandafter\def\csname devicon@java-plain-wordmark\endcsname { \symbol{"E841}} \def\diJavaPlainWordmark {{\DI\csname devicon@java-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@java-plain\endcsname { \symbol{"E842}} \def\diJavaPlain {{\DI\csname devicon@java-plain\endcsname}}
+\expandafter\def\csname devicon@javascript-plain\endcsname { \symbol{"E845}} \def\diJavascriptPlain {{\DI\csname devicon@javascript-plain\endcsname}}
+\expandafter\def\csname devicon@jquery-plain-wordmark\endcsname { \symbol{"E849}} \def\diJqueryPlainWordmark {{\DI\csname devicon@jquery-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@jquery-plain\endcsname { \symbol{"E84A}} \def\diJqueryPlain {{\DI\csname devicon@jquery-plain\endcsname}}
+\expandafter\def\csname devicon@krakenjs-plain-wordmark\endcsname { \symbol{"E84F}} \def\diKrakenjsPlainWordmark {{\DI\csname devicon@krakenjs-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@krakenjs-plain\endcsname { \symbol{"E850}} \def\diKrakenjsPlain {{\DI\csname devicon@krakenjs-plain\endcsname}}
+\expandafter\def\csname devicon@laravel-plain-wordmark\endcsname { \symbol{"E851}} \def\diLaravelPlainWordmark {{\DI\csname devicon@laravel-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@laravel-plain\endcsname { \symbol{"E852}} \def\diLaravelPlain {{\DI\csname devicon@laravel-plain\endcsname}}
+\expandafter\def\csname devicon@less-plain-wordmark\endcsname { \symbol{"E853}} \def\diLessPlainWordmark {{\DI\csname devicon@less-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@linux-plain\endcsname { \symbol{"EB1C}} \def\diLinuxPlain {{\DI\csname devicon@linux-plain\endcsname}}
+\expandafter\def\csname devicon@mongodb-plain-wordmark\endcsname { \symbol{"EB43}} \def\diMongodbPlainWordmark {{\DI\csname devicon@mongodb-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@mongodb-plain\endcsname { \symbol{"EB44}} \def\diMongodbPlain {{\DI\csname devicon@mongodb-plain\endcsname}}
+\expandafter\def\csname devicon@moodle-plain-wordmark\endcsname { \symbol{"EB5A}} \def\diMoodlePlainWordmark {{\DI\csname devicon@moodle-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@moodle-plain\endcsname { \symbol{"EB5B}} \def\diMoodlePlain {{\DI\csname devicon@moodle-plain\endcsname}}
+\expandafter\def\csname devicon@mysql-plain-wordmark\endcsname { \symbol{"EB60}} \def\diMysqlPlainWordmark {{\DI\csname devicon@mysql-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@mysql-plain\endcsname { \symbol{"EB61}} \def\diMysqlPlain {{\DI\csname devicon@mysql-plain\endcsname}}
+\expandafter\def\csname devicon@nodejs-plain-wordmark\endcsname { \symbol{"EB69}} \def\diNodejsPlainWordmark {{\DI\csname devicon@nodejs-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@nodejs-plain\endcsname { \symbol{"EB6A}} \def\diNodejsPlain {{\DI\csname devicon@nodejs-plain\endcsname}}
+\expandafter\def\csname devicon@oracle-original\endcsname { \symbol{"EB6B}} \def\diOracleOriginal {{\DI\csname devicon@oracle-original\endcsname}}
+\expandafter\def\csname devicon@photoshop-line\endcsname { \symbol{"EB6C}} \def\diPhotoshopLine {{\DI\csname devicon@photoshop-line\endcsname}}
+\expandafter\def\csname devicon@photoshop-plain\endcsname { \symbol{"EB6D}} \def\diPhotoshopPlain {{\DI\csname devicon@photoshop-plain\endcsname}}
+\expandafter\def\csname devicon@php-plain\endcsname { \symbol{"EB71}} \def\diPhpPlain {{\DI\csname devicon@php-plain\endcsname}}
+\expandafter\def\csname devicon@postgresql-plain-wordmark\endcsname { \symbol{"EB7C}} \def\diPostgresqlPlainWordmark {{\DI\csname devicon@postgresql-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@postgresql-plain\endcsname { \symbol{"EB7D}} \def\diPostgresqlPlain {{\DI\csname devicon@postgresql-plain\endcsname}}
+\expandafter\def\csname devicon@python-plain-wordmark\endcsname { \symbol{"EB88}} \def\diPythonPlainWordmark {{\DI\csname devicon@python-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@python-plain\endcsname { \symbol{"EB89}} \def\diPythonPlain {{\DI\csname devicon@python-plain\endcsname}}
+\expandafter\def\csname devicon@ruby-plain-wordmark\endcsname { \symbol{"EBC9}} \def\diRubyPlainWordmark {{\DI\csname devicon@ruby-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@ruby-plain\endcsname { \symbol{"EBCA}} \def\diRubyPlain {{\DI\csname devicon@ruby-plain\endcsname}}
+\expandafter\def\csname devicon@sass-original\endcsname { \symbol{"EBCB}} \def\diSassOriginal {{\DI\csname devicon@sass-original\endcsname}}
+\expandafter\def\csname devicon@travis-plain-wordmark\endcsname { \symbol{"EBCC}} \def\diTravisPlainWordmark {{\DI\csname devicon@travis-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@travis-plain\endcsname { \symbol{"EBCD}} \def\diTravisPlain {{\DI\csname devicon@travis-plain\endcsname}}
+\expandafter\def\csname devicon@trello-plain-wordmark\endcsname { \symbol{"EBCE}} \def\diTrelloPlainWordmark {{\DI\csname devicon@trello-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@trello-plain\endcsname { \symbol{"EBCF}} \def\diTrelloPlain {{\DI\csname devicon@trello-plain\endcsname}}
+\expandafter\def\csname devicon@ubuntu-plain-wordmark\endcsname { \symbol{"EBD0}} \def\diUbuntuPlainWordmark {{\DI\csname devicon@ubuntu-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@ubuntu-plain\endcsname { \symbol{"EBD1}} \def\diUbuntuPlain {{\DI\csname devicon@ubuntu-plain\endcsname}}
+\expandafter\def\csname devicon@vim-plain\endcsname { \symbol{"EBF3}} \def\diVimPlain {{\DI\csname devicon@vim-plain\endcsname}}
+\expandafter\def\csname devicon@windows8-original-wordmark\endcsname { \symbol{"EBF4}} \def\diWindowsOriginalWordmark {{\DI\csname devicon@windows8-original-wordmark\endcsname}}
+\expandafter\def\csname devicon@windows8-original\endcsname { \symbol{"EBF5}} \def\diWindowsOriginal {{\DI\csname devicon@windows8-original\endcsname}}
+\expandafter\def\csname devicon@wordpress-plain-wordmark\endcsname { \symbol{"EBFD}} \def\diWordpressPlainWordmark {{\DI\csname devicon@wordpress-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@wordpress-plain\endcsname { \symbol{"EBFE}} \def\diWordpressPlain {{\DI\csname devicon@wordpress-plain\endcsname}}
+\expandafter\def\csname devicon@yii-plain-wordmark\endcsname { \symbol{"EC01}} \def\diYiiPlainWordmark {{\DI\csname devicon@yii-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@yii-plain\endcsname { \symbol{"EC02}} \def\diYiiPlain {{\DI\csname devicon@yii-plain\endcsname}}
+\expandafter\def\csname devicon@zend-plain-wordmark\endcsname { \symbol{"EC03}} \def\diZendPlainWordmark {{\DI\csname devicon@zend-plain-wordmark\endcsname}}
+\expandafter\def\csname devicon@zend-plain\endcsname { \symbol{"EC04}} \def\diZendPlain {{\DI\csname devicon@zend-plain\endcsname}}
+
+\endinput

+ 787 - 0
fortysecondscv.cls

@@ -0,0 +1,787 @@
+% FortySecondsCV LaTeX class
+% Copyright © 2019-2022 René Wirnata <rene.wirnata@pandascience.net>
+% Licensed under the 3-Clause BSD License. See LICENSE file for details.
+%
+% Please visit https://github.com/PandaScience/FortySecondsCV for the most
+% recent version! For bugs or feature requests, please open a new issue on
+% github.
+%
+% Contributors:
+% https://github.com/PandaScience/FortySecondsCV/graphs/contributors
+%
+% Attributions
+% ------------
+% * fortysecondscv is based on the twentysecondcv class by Carmine Spagnuolo
+%   (cspagnuolo@unisa.it), released under the MIT license and available under
+%   https://github.com/spagnuolocarmine/TwentySecondsCurriculumVitae-LaTex
+% * further attributions are indicated immediately before corresponding code
+
+
+%-------------------------------------------------------------------------------
+%                           CLASS NAME AND VERSION
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{fortysecondscv}[2020/10/19 CV class]
+
+
+%-------------------------------------------------------------------------------
+%                            PROCESS CLASS OPTIONS
+%-------------------------------------------------------------------------------
+%% first load all packages absolutely required to parse class options
+% for easy color definitions; provides \definecolor; load before background pkg
+\RequirePackage[dvipsnames, svgnames, x11names]{xcolor}
+% for positioning text within the side column | use showboxes for visible frame
+\RequirePackage[absolute,overlay]{textpos}
+% provides key-value class options via \DeclareOptionX
+\RequirePackage{xkeyval}
+% provides \ifnumgreater{<int expr.>}{<int expr.>}{<true>}{<false>},
+% \apptocmd{<command>}{<code>}{<success>}{<failure>} and \newtoggle{<name>}
+\RequirePackage{etoolbox}
+% provides basic conditional expressions
+\RequirePackage{ifthen}
+% enable simple math like +/- etc. on lengths
+\RequirePackage{calc}
+% change page margins
+\RequirePackage[
+	nohead,
+	nofoot,
+	nomarginpar,
+]{geometry}
+
+% pre-define some colors the user can choose from
+\definecolor{cvblue}{HTML}{0E5484}
+\definecolor{cvgreen}{HTML}{007170}
+\definecolor{cvred}{HTML}{8B0000}
+\definecolor{cvsidecolor}{HTML}{E7E7E7}
+\definecolor{cvsectioncolor}{HTML}{0395DE}
+\definecolor{cvsubsectioncolor}{HTML}{4D4D4D}
+% set default values
+\colorlet{maincolor}{cvblue}
+\colorlet{sidecolor}{cvsidecolor}
+\colorlet{sidetextcolor}{black}
+\colorlet{sectioncolor}{cvsectioncolor}
+\colorlet{subsectioncolor}{cvsubsectioncolor}
+\colorlet{itemtextcolor}{black!90}
+% colors for document body (right column)
+% let user define main color
+\DeclareOptionX{maincolor}{\colorlet{maincolor}{#1}}
+\DeclareOptionX{sidecolor}{\colorlet{sidecolor}{#1}}
+\DeclareOptionX{sidetextcolor}{\colorlet{sidetextcolor}{#1}}
+\DeclareOptionX{sectioncolor}{\colorlet{sectioncolor}{#1}}
+\DeclareOptionX{subsectioncolor}{\colorlet{subsectioncolor}{#1}}
+\DeclareOptionX{itemtextcolor}{\colorlet{itemtextcolor}{#1}}
+
+% set page margins
+\newlength\sidebarwidth%
+\newlength\topbottommargin%
+\newlength\leftrightmargin%
+\newlength\sidebartextwidth
+% default values
+\setlength{\sidebarwidth}{0.34\paperwidth}
+\setlength{\topbottommargin}{0.02\paperheight}
+\setlength{\leftrightmargin}{0.02\paperwidth}
+% user overwrites
+\DeclareOptionX{sidebarwidth}{\setlength{\sidebarwidth}{#1}}
+\DeclareOptionX{topbottommargin}{\setlength{\topbottommargin}{#1}}
+\DeclareOptionX{leftrightmargin}{\setlength{\leftrightmargin}{#1}}
+
+% profile picture settings
+\newlength\profilepicsize%
+\setlength{\profilepicsize}{0.7\sidebarwidth}
+\DeclareOptionX{profilepicsize}{\setlength{\profilepicsize}{#1}}
+\newlength\profilepicborderwidth%
+\setlength{\profilepicborderwidth}{3.5pt}
+\DeclareOptionX{profilepicborderwidth}{\setlength{\profilepicborderwidth}{#1}}
+\newcommand*{\profilepicstyle}{}
+\DeclareOptionX{profilepicstyle}{\renewcommand{\profilepicstyle}{#1}}
+\newcommand*{\profilepiczoom}{}
+\DeclareOptionX{profilepiczoom}{\renewcommand{\profilepiczoom}{#1}}
+\newlength\profilepicxshift
+\setlength{\profilepicxshift}{0mm}
+\DeclareOptionX{profilepicxshift}{\setlength{\profilepicxshift}{#1}}
+\newlength\profilepicyshift
+\setlength{\profilepicyshift}{0mm}
+\DeclareOptionX{profilepicyshift}{\setlength{\profilepicyshift}{#1}}
+\newlength\profilepicrounding
+\setlength{\profilepicrounding}{0.15\sidebarwidth}
+\DeclareOptionX{profilepicrounding}{\setlength{\profilepicrounding}{#1}}
+
+% sidebar settings
+\newcommand*{\sidebarplacement}{}
+\DeclareOptionX{sidebarplacement}{\renewcommand{\sidebarplacement}{#1}}
+\newcommand*{\sidesectionsize}{\huge}
+\DeclareOptionX{sidesectionsize}{%
+	\expandafter\renewcommand{\sidesectionsize}{\csname #1\endcsname}%
+}
+% \DeclareOptionX{sidesectionsize}{\renewcommand{\sidesectionsize}{\small}}
+
+% logo settings
+\newlength\logowidth%
+\setlength{\logowidth}{\profilepicsize}
+\DeclareOptionX{logowidth}{\setlength{\logowidth}{#1}}
+\newlength\logospace%
+\DeclareOptionX{logospace}{\setlength{\logospace}{#1}}
+\newcommand*{\logoposition}{}
+\DeclareOptionX{logoposition}{\renewcommand{\logoposition}{#1}}
+
+% show sidebar and page margins
+\newtoggle{tshowframes}
+\togglefalse{tshowframes}
+\DeclareOptionX{showframes}{
+	\geometry{showframe}
+	\TPoptions{showboxes=true}
+	\toggletrue{tshowframes}
+	% adding \hline in \newenvironment directly doesn't work, so do it here...
+	\AtBeginDocument{\apptocmd{\personaldata}{\hline}{}{}}
+}
+
+% draw vertical guideline
+\newcommand{\plotvline}{}
+\DeclareOptionX{vline}{%
+	% must be defined here as macro, b/c tikz won't expand absolute length in
+	% \backgroundsetup -- BUG?
+	\renewcommand{\plotvline}{%
+		\draw [thick, red, opacity=0.7]
+		(\leftrightmargin + #1, 0) -- (\leftrightmargin + #1, -\paperheight);
+	}
+}
+
+% date column width
+\newlength\datecolwidth
+\setlength{\datecolwidth}{0.17\textwidth}
+\DeclareOptionX{datecolwidth}{\setlength{\datecolwidth}{#1}}
+
+% pass further options to base class and load it
+\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptionsX\relax
+\LoadClass{article}
+
+% compute "inner" margin of sidebar automatically;
+% must come after \sidebarwidth and \leftrightmargin possibly changed by user
+\setlength{\sidebartextwidth}{\sidebarwidth - 2\leftrightmargin}
+
+% let geometry package perform the changes;
+% must come after loading the base class to prevent overwriting
+\ifthenelse{\equal{\sidebarplacement}{right}}{%
+	\geometry{
+		top=\topbottommargin,
+		bottom=\topbottommargin,
+		right=\sidebarwidth + \leftrightmargin,
+		left=\leftrightmargin,
+	}
+}{% else
+	\geometry{
+		top=\topbottommargin,
+		bottom=\topbottommargin,
+		left=\sidebarwidth + \leftrightmargin,
+		right=\leftrightmargin,
+	}
+}
+
+%-------------------------------------------------------------------------------
+%                              REQUIRED PACKAGES
+%-------------------------------------------------------------------------------
+% use as workaround for spacing problem when TikZ picture is not in paragraph;
+% details: https://tex.stackexchange.com/a/435790
+\RequirePackage[texcoord]{eso-pic}
+
+% for easy section style definitions
+\RequirePackage{titlesec}
+
+% loads graphicx, provides align=c option for vertical alignment w.r.t. text
+\RequirePackage{graphbox}
+
+% provides X column type for automatic length calculations
+\RequirePackage{tabularx}
+\RequirePackage{longtable, tabu}
+
+% take care of compiler-specific packages
+\RequirePackage{ifluatex}
+\RequirePackage{ifxetex}
+\newif\ifxetexorluatex
+\ifxetex
+	\xetexorluatextrue
+\else
+	\ifluatex
+		\xetexorluatextrue
+	\else
+		\xetexorluatexfalse
+	\fi
+\fi
+
+% pictures, icons and drawings
+\ifxetexorluatex
+	\RequirePackage{academicons}
+\fi
+\RequirePackage{fontawesome5}
+\RequirePackage{devicons}
+\RequirePackage{tikz}
+\usetikzlibrary{arrows, backgrounds}
+
+% provides \xrfill for horizontal rules
+\RequirePackage{xhfill}
+
+% enable multiple optional arguments in macros
+\RequirePackage{xparse}
+
+% enable links
+\RequirePackage[hidelinks]{hyperref}
+
+
+%-------------------------------------------------------------------------------
+%                          DERIVED COLOR DEFINITIONS
+%-------------------------------------------------------------------------------
+% profile section color (sidebar/left column)
+\colorlet{pseccolor}{maincolor!90}
+% color used for all icon arguments
+\colorlet{iconcolor}{maincolor!90}
+
+% color definitions for TikZ drawings
+\colorlet{wheelchartlabelcolor}{black}
+\colorlet{wheeltextcolor}{black!80!white}
+% color of unfilled skill points / bar / chart label
+\colorlet{skillbg}{black!25}
+
+
+%-------------------------------------------------------------------------------
+%                      GLOBAL LAYOUT AND HEADINGS STYLE
+%-------------------------------------------------------------------------------
+% remove headers and footers
+\pagestyle{empty}
+
+% globally disable paragraph indentation
+\setlength{\parindent}{0pt}
+
+% set space between paragraphs
+% \setlength{\parskip}{1ex}
+
+% creates a rule after some text using remaining line width
+% usage: \xrfill[<raise>]{<width>}
+\newcommand*{\sectionline}[1]{#1~\xrfill[.5ex]{1pt}[pseccolor]}
+
+% section style for cv table headings in right column
+% \titleformat{<command>}[<shape>]{<format>}{<label>}{<sep>}{<before>}[<after>]
+\newcommand*{\cvsection}[1]{\section*{#1}}
+\titleformat{\section}%
+	{\color{sectioncolor}\normalfont\bfseries\LARGE}{}{0pt}{}
+\titlespacing*{\section}{0pt}{1.5ex}{1ex}
+
+% grey subsection style for right column
+\newcommand*{\cvsubsection}[1]{\subsection*{#1}}
+\titleformat{\subsection}%
+	{\color{subsectioncolor}\normalfont\large}{}{0pt}{}
+
+% for compatibility with older versions
+\newcommand*{\profilesection}[1]{\subsubsection*{#1}}
+% abuse subsubsection as sidesection in left column
+\newcommand*{\sidesection}[1]{\subsubsection*{#1}}
+\titleformat{\subsubsection}%
+	{\color{pseccolor}\normalfont\sidesectionsize}{}{0pt}%
+	{\color{pseccolor}\sectionline}%
+% set spaces before and after sidesections: <left><before><after>
+% "starred version kills the indentation of the paragraph following the title"
+\titlespacing*{\subsubsection}{0pt}{1ex}{1ex}
+
+
+%-------------------------------------------------------------------------------
+%                              SIDEBAR ELEMENTS
+%-------------------------------------------------------------------------------
+% text in user-specific color
+\newcommand{\sidetext}[1]{\textcolor{sidetextcolor}{#1}}
+
+% mandatory personal information
+\newcommand*{\cvname}[1]{\renewcommand{\cvname}{#1}}
+\newcommand*{\cvjobtitle}[1]{\renewcommand{\cvjobtitle}{#1}}
+
+% profile picture (optional)
+\newcommand{\plotprofilepicture}{}
+\newcommand*{\cvprofilepic}[1]{
+	\renewcommand{\cvprofilepic}{#1}
+
+	\ifthenelse{\equal{\profilepicstyle}{profilecircle}}{
+		\renewcommand{\plotprofilepicture}{\profilecircle}
+	}{
+		\renewcommand{\plotprofilepicture}{\profileroundedcorners}
+	}
+}
+
+% additional logo (optional)
+\newcommand{\plotlogobefore}{}
+\newcommand{\plotlogoafter}{}
+\newcommand*{\cvlogopic}[1]{%
+	% default = before; if any other (incl. 'after') --> after
+	\ifthenelse{\equal{\logoposition}{before}}{%
+		\renewcommand{\plotlogobefore}{%
+			\begin{figure}\centering%
+				\includegraphics[align=c, width=\logowidth]{#1}%
+			\end{figure}
+			\vspace*{\logospace}%
+		}%
+	}{%
+		\renewcommand{\plotlogoafter}{%
+			\vspace*{\logospace}%
+			\begin{figure}\centering%
+				\includegraphics[align=c, width=\logowidth]{#1}%
+			\end{figure}
+		}%
+	}
+}
+
+% social network item; \social{<icon>}{<url>}{<text>}
+\newcommand*{\social}[3]{%
+	\socialicon{#1} & \href{#2}{\sidetext{#3}}\\%
+}
+
+% personal information item; \personal{<icon>}{<text>}
+\newcommand*{\personal}[2]{%
+	\circleicon{#1} & {\sidetext{#2}}\\%
+}
+
+% other personal information as macro that can be used later. Usage:
+% \cvcustomdata{<Icon>}{<Text>}
+% icon can be taken from FontAwesome or Academicon for example
+\newcommand{\personaldata}{}
+\newcommand*{\cvcustomdata}[2]{%
+	\apptocmd{\personaldata}{\personal{#1}{#2}}{}{}%
+}
+
+% useful shortcuts
+% NOTE: we use href instead of url so user can decide textformatting since url
+% automatically uses \texttt{} as format for the url
+\newcommand*{\cvbirthday}[1]{\cvcustomdata{\faUser}{#1}}
+\newcommand*{\cvaddress}[1]{\cvcustomdata{\faEnvelope}{#1}}
+\newcommand*{\cvphone}[1]{\cvcustomdata{\faPhone}{\href{tel:#1}{#1}}}
+\newcommand*{\cvsite}[1]{\cvcustomdata{\faGlobe}{\href{#1}{#1}}}
+\newcommand*{\cvmail}[1]{\cvcustomdata{\faAt}{\href{mailto:#1}{#1}}}
+\newcommand*{\cvkey}[2]{\cvcustomdata{\faKey}{%
+	\href{https://keyserver.ubuntu.com/pks/lookup?search=#2\&op=vindex\&fingerprint=on}{#1}%
+}}
+
+% TODO find a cleaner solution for consistent spacing
+\newcommand{\nameandjob}{%
+	{\Huge\color{maincolor}\cvname}\par%
+	\setlength{\parskip}{2ex}
+	{\Large\color{black!80}\cvjobtitle}\par%
+	\setlength{\parskip}{1ex}
+}
+
+\newcommand{\profileroundedcorners}{%
+	\begin{figure}\centering
+		% see TikZ/pgf v3.1.1 manual §2.11 (clipping), §14.5 (rounded corners),
+		% §12 (scopes), §13.2 (coordinate systems)
+		\begin{tikzpicture}[x=\profilepicsize, y=\profilepicsize]
+			\begin{scope}
+				\path[clip]
+					(0, 0) [sharp corners] --
+					(0, 1) [rounded corners=\profilepicrounding] --
+					(1, 1) [sharp corners] --
+					(1, 0) [rounded corners=\profilepicrounding] -- cycle;
+				\node[anchor=center, inner sep=0pt, xshift=\profilepicxshift,
+						yshift=\profilepicyshift] (profilepic) at (0.5, 0.5)
+					{\includegraphics[width=\profilepiczoom\profilepicsize]
+						{\cvprofilepic}};
+			\end{scope}
+			\ifdim \profilepicborderwidth > 0pt
+				\begin{scope}
+					\draw[line width=\profilepicborderwidth, color=iconcolor]
+					(0, 0) [sharp corners] --
+					(0, 1) [rounded corners=\profilepicrounding] --
+					(1, 1) [sharp corners] --
+					(1, 0) [rounded corners=\profilepicrounding] -- cycle;
+				\end{scope}
+			\fi
+		\end{tikzpicture}
+	\end{figure}
+}
+
+\newcommand{\profilecircle}{%
+	\begin{figure}\centering
+		\begin{tikzpicture}[x=\profilepicsize, y=\profilepicsize]
+			\begin{scope}
+				\clip (0, 0) circle (0.5);
+				\node[anchor=center, inner sep=0pt, outer sep=0pt,
+						xshift=\profilepicxshift, yshift=\profilepicyshift]
+					(profilepic) at (0,0) {
+				\includegraphics[width=\profilepiczoom\profilepicsize]
+					{\cvprofilepic}};
+			\end{scope}
+			\ifdim \profilepicborderwidth > 0pt
+				\begin{scope}
+					\draw[line width=\profilepicborderwidth, color=iconcolor]
+						(0, 0) circle (0.5\profilepicsize);
+				\end{scope}
+			\fi
+		\end{tikzpicture}
+	\end{figure}
+}
+
+% table with 2 columns for icons and text
+% \icontable{<width 1st column>}{<space between columns>}{<arraystretch>}
+\newenvironment{icontable}[3][1]%
+{%
+	\renewcommand{\arraystretch}{#1}% increase linespacing in tables; default=1
+	\iftoggle{tshowframes}{%
+		% https://tex.stackexchange.com/a/42331
+		\tabularx{\sidebartextwidth}{|m{#2} | @{\hskip #3} | X|} \hline%
+	}{%
+		\tabularx{\sidebartextwidth}{m{#2} @{\hskip #3} X}%
+	}
+}{%
+	\endtabularx%
+}
+
+% icon style for personal information
+\newcommand*\circleicon[1]{%
+	\tikz[baseline = (char.base)]{%
+		\node[%
+			shape=circle,%
+			draw,%
+			inner sep=1pt,%
+			fill=iconcolor,%
+			maincolor,%
+			text=white,%
+			minimum size=\hsize%
+		] (char) {#1};%
+	}%
+}
+
+% icon style for social network
+\newcommand*{\socialicon}[1]{%
+	\resizebox{\hsize}{!}{\textcolor{iconcolor}{#1}}%
+}
+
+% make sure about me text stays in textbox frame
+\newcommand{\aboutme}[1]{\parbox[b]{\linewidth}{\sidetext{#1}}}
+
+% uniform icon style for all skill icons, e.g. flags or fontawesome icons
+\newcommand{\cvicon}[1]{\makebox[1em]{\color{iconcolor} #1}}
+\newcommand{\flag}[1]{\includegraphics[align=c, width=1em]{#1}}
+
+% \pointskill[<indent>]{<icon>}{<description>}{<points>}[<maxpoints>] creates
+% | [indent] [icon]  description  \hfill  ● ● ● ○ ○ |
+% -- inspired by arravc.cls by LianTze Lim: https://github.com/liantze/AltaCV
+\NewDocumentCommand{\pointskill}{ O{0em} m m m O{5} }{%
+	\hspace{#1} \cvicon{#2} ~ \sidetext{#3} \hfill%
+	\foreach \x in {1,...,#5}{%
+		\space%
+		{\ifnumgreater{\x}{#4}{\color{skillbg}}{\color{iconcolor}}% from etoolbox
+		% don't use totalheight; see https://tex.stackexchange.com/a/41014
+		\raisebox{0.5\height-0.4ex}{\scriptsize\faCircle}%
+		}
+	}\par%
+}
+
+\newcommand{\barskill}[4][1ex]{
+	% remove 1pt in width to prevent overfull box warnings
+	\begin{tikzpicture}[x=\sidebartextwidth-1pt, y=#1]
+			\draw[fill, skillbg, rounded corners=0.25em]
+				(0, 0) rectangle (1, 1);
+			\draw[fill, iconcolor!70, rounded corners=0.25em]
+				(0, 0) rectangle (#4/100, 1);
+			\node[above right] at (0, 1) {\cvicon{#2} ~ \sidetext{#3}};
+	\end{tikzpicture}
+	\par
+}
+
+% \skill[<indent>]{<icon>}{<description>} creates in sidebar
+% | [indent] [icon]  some longer skill description  |
+\newcommand{\skill}[3][0em]{
+	\hspace{#1} \cvicon{#2} ~ \parbox{\linewidth-#1-2.5em}{\sidetext{#3}}%
+	\hfill \par%
+}
+
+% label for wheel charts
+\newcommand{\chartlabel}[2][skillbg]{%
+	\begin{tikzpicture}
+	\node[
+		fill=#1!25, % interior color
+		anchor=base,
+		draw=#1, % line color
+		rounded corners,
+		inner xsep=1ex, % distance from left/right border to text
+		inner ysep=0.75ex, % distance top/bottom border to text
+		text height=1.5ex, % align text vertically in box (at least as resulting
+		text depth=.25ex   % effect)
+	]{\sidetext{#2}};%
+	\end{tikzpicture}
+}
+
+
+\newenvironment{sidebarminipage}%
+	{\begin{minipage}{\sidebartextwidth}}%
+	{\end{minipage}}%
+
+
+\newenvironment{memberships}[1][1em]%
+{%
+	\iftoggle{tshowframes}{%
+		\tabularx{\sidebartextwidth}{|l | @{\hskip #1} | X|} \hline%
+	}{%
+		\tabularx{\sidebartextwidth}{l @{\hskip #1} X}%
+	}
+}{%
+	\endtabularx%
+}%
+
+
+\newcommand{\membership}[3][4em]{
+	\includegraphics[align=c,width=#1]{#2} & \sidetext{#3} \\[3ex]
+}
+
+% adapted from https://tex.stackexchange.com/a/82729
+\newcommand{\wheelchart}[4][-90]{%
+	\def\outerradius{#2}%
+	\def\innerradius{#3}%
+	% Calculate total
+	\pgfmathsetmacro{\totalnum}{0}%
+	\foreach\value/\colour/\name in {#4} {%
+		\pgfmathparse{\value+\totalnum}%
+		\global\let\totalnum=\pgfmathresult%
+	}%
+	\begin{tikzpicture}
+
+		% Calculate the thickness and the middle line of the wheel
+		\pgfmathsetmacro{\wheelwidth}{\outerradius-\innerradius}
+		\pgfmathsetmacro{\midradius}{(\outerradius+\innerradius)/2}
+
+		% Rotate so we start from the top
+		\begin{scope}[rotate=#1, on background layer]
+		% Loop through each value set. \cumnum keeps track of where we are in the
+		% wheel
+		\pgfmathsetmacro{\cumnum}{0}
+		\foreach \value/\width/\colour/\name in {#4} {
+			\pgfmathsetmacro{\newcumnum}{\cumnum + \value/\totalnum*360}
+
+			% Calculate the percent value
+			\pgfmathsetmacro{\percentage}{\value/\totalnum*100}
+			% Calculate the mid angle of the colour segments to place the labels
+			\pgfmathsetmacro{\midangle}{-(\cumnum+\newcumnum)/2}
+
+			% This is necessary for the labels to align nicely
+			\pgfmathparse{
+				(-\midangle>180?"west":"east")
+			} \edef\textanchor{\pgfmathresult}
+			\pgfmathparse{
+				(-\midangle>180?"flush left":"flush right")
+			} \edef\textalign{\pgfmathresult}
+			\pgfmathsetmacro\labelshiftdir{1-2*(-\midangle<180)}
+
+			% Draw the color segments. Somehow, the \midrow units got lost, so
+			% we add 'pt' at the end. Not nice...
+			\filldraw[draw=white,fill=\colour]
+				(-\cumnum:\outerradius)
+				arc (-\cumnum:-(\newcumnum):\outerradius)
+				-- (-\newcumnum:\innerradius)
+				arc (-\newcumnum:-(\cumnum):\innerradius)
+				-- cycle;
+
+			% Draw the data labels
+			\draw [*-,thin,wheelchartlabelcolor] node [append after command={
+				(\midangle:\midradius pt) --
+				(\midangle:\outerradius + 1ex) --
+				(\tikzlastnode)}] at (\midangle:\outerradius + 1ex) [
+				xshift=\labelshiftdir*0.5cm,inner sep=1ex,
+				outer sep=0pt,
+				text width=\width,
+				anchor=\textanchor,
+				align=\textalign,
+				font=\small,
+				text=wheeltextcolor
+			]{\name};
+			% Set the old cumulated angle to the new value
+			\global\let\cumnum=\newcumnum
+		}
+		\end{scope}
+	\end{tikzpicture}\par
+}
+
+\newcommand{\cvsignature}{
+	\vfill
+	{\large\bfseries\color{maincolor!70}\today \hfill \cvname}
+}
+
+
+%-------------------------------------------------------------------------------
+%                               SIDEBAR LAYOUT
+%-------------------------------------------------------------------------------
+% draw sidebar background on current page
+\newcommand{\drawSidebarBG}{%
+	\AddToShipoutPictureBG*{%
+		\ifthenelse{\equal{\sidebarplacement}{right}}{%
+			\begin{tikzpicture}[remember picture, overlay]
+				\node at (current page.north east)[
+					rectangle,
+					fill=sidecolor,
+					anchor=north east,
+					minimum width=\sidebarwidth,
+					minimum height=\paperheight,
+				]{};%
+				% plot vertical red guideline
+				\plotvline%
+			\end{tikzpicture}%
+		}{% else
+			\begin{tikzpicture}[remember picture, overlay]
+				\node[
+					rectangle,
+					fill=sidecolor,
+					anchor=north west,
+					minimum width=\sidebarwidth,
+					minimum height=\paperheight,
+				]{};%
+				% plot vertical red guideline
+				\plotvline%
+			\end{tikzpicture}%
+		}%
+	}%
+}%
+
+% use textpos to position textblock within TikZ background; we have to use
+% the starred version for absolute values here, b/c we use \pagewidth directly
+% instead of \setlength{\TPHorizModule}{<dimen>}, which seems to be "absolute"
+% as opposed to "relative" - strange but true.
+\newenvironment{sidebar}{%
+	\drawSidebarBG%
+	\ifthenelse{\equal{\sidebarplacement}{right}}{%
+		\begin{textblock*}{\sidebartextwidth}%
+			(\paperwidth - \sidebarwidth + \leftrightmargin, \topbottommargin)
+	}{% else
+		\begin{textblock*}{\sidebartextwidth}(\leftrightmargin, \topbottommargin)
+	}%
+}{%
+	\end{textblock*}%
+}
+
+% provide user interface for easily adding new sections in side bars
+% default: empty sidebar
+\newcommand{\frontsidebar}{}
+\newcommand{\backsidebar}{}
+\newcommand{\addtofrontsidebar}[1]{\apptocmd{\frontsidebar}{#1}{}{}}
+\newcommand{\addtobacksidebar}[1]{\apptocmd{\backsidebar}{#1}{}{}}
+
+\newcommand{\makefrontsidebar}{%
+	\begin{sidebar}
+		% most sidebar commands end with \par; increase space between them
+		\setlength{\parskip}{1ex}
+
+		% optionally insert logo picture before profile
+		\plotlogobefore
+
+		% optionally insert profile picture
+		\plotprofilepicture
+
+		% optionally insert logo picture after profile
+		\plotlogoafter
+
+		\vspace{1ex}
+
+		% name and job
+		\nameandjob
+
+		% personal information
+		\vspace*{0.5em}
+		\begin{icontable}[1.6]{1.7em}{0.4em}
+			\personaldata
+		\end{icontable}
+
+		% user definitions
+		\frontsidebar
+	\end{sidebar}
+}
+
+\newcommand{\makebacksidebar}{%
+	\begin{sidebar}
+		% begin with name instead of picture
+		\nameandjob
+
+		% make sure there is no space at top, but after cvjob
+		\setlength{\parskip}{1ex}
+
+		% user definitions
+		\backsidebar
+	\end{sidebar}
+}
+
+
+%-------------------------------------------------------------------------------
+%                              LIST ENVIRONMENTS
+%-------------------------------------------------------------------------------
+% reduce space between table columns to minimum
+\setlength{\tabcolsep}{0pt}
+
+% cv list environment --> table, left aligned, width=textwidth
+% tabular starred version adds space to make table as wide as \textwidth here
+\newenvironment{cvtable}[1][1]{%
+	\renewcommand{\arraystretch}{#1}%
+	% remove additional spacing before and after longtables
+	\setlength{\LTpre}{0pt}
+	\setlength{\LTpost}{0pt}
+	\iftoggle{tshowframes}{%
+		\begin{longtabu} to \textwidth {@{\extracolsep{\fill}}|l|l|}%
+		\hline%
+	}{%
+		\begin{longtabu} to \textwidth {@{\extracolsep{\fill}}ll}%
+	}
+}{%
+	\iftoggle{tshowframes}{%
+		\hline%
+		\end{longtabu}%
+	}{%
+		\end{longtabu}%
+	}
+}
+
+% | <keyword>      <one-line description>            |
+% use parbox if text needs to use multiple lines
+\newcommand{\cvitemshort}[2]{%
+	\parbox[t]{\datecolwidth}{\raggedright #1}
+	& \parbox[t]{0.98\textwidth-\datecolwidth}{#2} \\}
+
+% | <date>         <bold-title>  \hfill  <location>  |
+% |                <longer description>              |
+% or, if description is empty:
+% | <date>         <title>       \hfill  <location>  |
+\newcommand{\cvitem}[4]{%
+	\parbox[t]{\datecolwidth}{\raggedright #1} &%
+	\parbox[t]{0.98\textwidth-\datecolwidth}{%
+		\if\relax\detokenize{#4}\relax%
+			\parbox[t]{\linewidth-\widthof{\footnotesize #3}-1em}{\raggedright #2}%
+			\hfill {\footnotesize#3}%
+		\else%
+			\parbox[t]{\linewidth-\widthof{\footnotesize #3}-1em}{\raggedright \textbf{#2}}%
+			\hfill {\footnotesize#3} \\%
+			\textcolor{itemtextcolor}{#4}%\vspace{\parsep}%
+		\fi%
+	}\\
+}
+
+% | <date>         <bold-title>  \par\hfill  <location>  |
+% |                <longer description>              |
+% or, if description is empty:
+% | <date>         <title>       \par\hfill  <location>  |
+\newcommand{\cvitempar}[4]{%
+	\parbox[t]{\datecolwidth}{\raggedright #1} &%
+	\parbox[t]{0.98\textwidth-\datecolwidth}{%
+		\if\relax\detokenize{#4}\relax%
+			\parbox[t]{\textwidth}{\raggedright #2}%
+			\par\hfill {\footnotesize#3}%
+		\else%
+			\parbox[t]{\textwidth}{\raggedright \textbf{#2}}%
+			\par\hfill {\footnotesize#3} \\%
+			\textcolor{itemtextcolor}{#4}%\vspace{\parsep}%
+		\fi%
+	}\\
+}
+
+% publication item
+% \cvpubitem{<title>}{<author>}{<journal>}{<year>} will produce
+% | <year>         <bold title>                      |
+% |                <italic author>                   |
+% |                <journal>                         |
+\newcommand{\cvpubitem}[4]{%
+	\parbox[t]{\datecolwidth}{\raggedright #4} &
+	\parbox[t]{0.98\textwidth-\datecolwidth}{%
+		\textbf{#1} \par \textit{#2} \par #3 \vspace{\parsep}%
+	}\\
+}
+
+% EOF - fortysecondscv.cls

+ 70 - 0
pics/flags/Hello.txt

@@ -0,0 +1,70 @@
+Flag Icons by GoSquared (http://www.gosquared.com/)
+
+Version: 2.6
+Last Updated: 8th March 2013
+
+Usage:
+  You're free to use this set for both personal and commercial projects
+  (MIT License, see LICENSE.txt), and a back-link is not required
+  (but certainly appreciated).
+
+
+Inclusion of flags:
+  This icon set includes all flags for recognized sovereign states, plus several other major
+  territories. As a rule, disputed states ARE included without discrimination.
+
+
+Contacting Us:
+  If you have any suggestions of corrections (incorrectly named, missing, or out-of-date flags etc.),
+  then don't hesitate to get in touch at support@gosquared.com and we will do our best
+  to rectify any mistakes or omissions.
+
+
+Changelog:
+
+ * 2.6: 8th March 2013
+     Added Saint Martin to bring total now to 260
+
+ * 2.5: 3rd March 2013
+     Couple more missing flags:
+       Canary Islands
+       Curaçao
+
+ * 2.4: 2nd March 2013
+     Added a couple more missing:
+       Basque Country
+       Martinique
+     Added "unknown"
+     Cleaned out some buggy files called ".png" that crept in somehow
+
+ * 2.3: 26th January 2013
+     Added more missing flags:
+       French Polynesia
+       Frensh Southern Territories
+       Tokelau
+       Wallis and Futuna
+     Removed Kosovo's ISO code (it doesn't have one, KV was wrong)
+     Corrected East Timor's ISO code (TP -> TL)
+
+ * 2.2: 29th October 2012
+     Added some missing flags:
+       British Antarctic Territories
+       Christmas Island
+       Cocos (Keeling) Islands
+       Cook Islands
+       Gibraltar
+       Mayotte
+       New Caledonia
+       Niue
+     Added ico and icns formats
+     Fixed problem where all flags in flats/flat had no extension (oops!)
+     Fixed alignment of Nepal overlay at 48x48
+
+ * 2.1: 19th October 2012
+     Fixed incorrect ISO code for Montenegro (CS -> ME)
+
+ * 2.0: 18th October 2012
+     Fully revamped with new "shiny" style, updated with changed and new flags
+
+ * 1.0: 16th September 2010
+     First created. Icon set containing 2400 flag icons

+ 7 - 0
pics/flags/LICENSE.txt

@@ -0,0 +1,7 @@
+Copyright (c) 2014 Go Squared Ltd. http://www.gosquared.com/
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

二进制
pics/flags/flat/CN.png


二进制
pics/flags/flat/DE.png


二进制
pics/flags/flat/FR.png


二进制
pics/flags/flat/GB.png


二进制
pics/flags/flat/NL.png


二进制
pics/flags/shiny/CN.png


二进制
pics/flags/shiny/DE.png


二进制
pics/flags/shiny/FR.png


二进制
pics/flags/shiny/GB.png


二进制
pics/flags/shiny/NL.png


二进制
pics/logo.png


二进制
pics/logo_txt.png


二进制
pics/profile.png


二进制
pics/template-0.jpg


二进制
pics/template-1.jpg


+ 375 - 0
template.tex

@@ -0,0 +1,375 @@
+% FortySecondsCV LaTeX template
+% Copyright © 2019-2022 René Wirnata <rene.wirnata@pandascience.net>
+% Licensed under the 3-Clause BSD License. See LICENSE file for details.
+%
+% Please visit https://github.com/PandaScience/FortySecondsCV for the most
+% recent version! For bugs or feature requests, please open a new issue on
+% github.
+%
+% Contributors:
+% https://github.com/PandaScience/FortySecondsCV/graphs/contributors
+%
+% Attributions
+% ------------
+% * fortysecondscv is based on the twentysecondcv class by Carmine Spagnuolo
+%   (cspagnuolo@unisa.it), released under the MIT license and available under
+%   https://github.com/spagnuolocarmine/TwentySecondsCurriculumVitae-LaTex
+% * further attributions are indicated immediately before corresponding code
+
+
+%-------------------------------------------------------------------------------
+%                             ADDITIONAL PACKAGES
+%-------------------------------------------------------------------------------
+\documentclass[
+	a4paper,
+	% 9pt,
+	% sidesectionsize=Large,
+	% showframes,
+	% vline=2.2em,
+	% maincolor=cvgreen,
+	% sidecolor=gray!50,
+	% sidetextcolor=green,
+	% sectioncolor=red,
+	% subsectioncolor=orange,
+	% itemtextcolor=black!80,
+	% sidebarwidth=0.4\paperwidth,
+	% topbottommargin=0.03\paperheight,
+	% leftrightmargin=20pt,
+	% profilepicsize=4.5cm,
+	% profilepicborderwidth=3.5pt,
+	% profilepicstyle=profilecircle,
+	% profilepiczoom=1.0,
+	% profilepicxshift=0mm,
+	% profilepicyshift=0mm,
+	% profilepicrounding=1.0cm,
+	% logowidth=4.5cm,
+	% logospace=5mm,
+	% logoposition=before,
+	% sidebarplacement=right,
+	% datecolwidth=0.22\textwidth,
+]{fortysecondscv}
+
+% fine tune line spacing
+% \usepackage{setspace}
+% \setstretch{1.1}
+
+% improve word spacing and hyphenation
+\usepackage{microtype}
+\usepackage{ragged2e}
+
+% uncomment in case you don't want any hyphenation
+% \usepackage[none]{hyphenat}
+
+% take care of proper font encoding
+\ifxetexorluatex
+	\usepackage{fontspec}
+	\defaultfontfeatures{Ligatures=TeX}
+	% \newfontfamily\headingfont[Path=fonts/]{segoeuib.ttf} % use local font
+\else
+	\usepackage[utf8]{inputenc}
+	\usepackage[T1]{fontenc}
+\fi
+
+% use a sans serif font as default
+\usepackage[sfdefault]{ClearSans}
+% \usepackage[sfdefault]{noto}
+
+% multi-language CV XeLaTeX and polyglossia (should also work with LuaLaTeX)
+% NOTE: breaks \pointskill, \membership and some spacings
+% \ifxetexorluatex
+% 	\usepackage{polyglossia}
+% 	\newfontfamily\arabicfontsf[Script=Arabic,Scale=1.5]{Amiri}
+% 	\newfontfamily\englishfontsf{Clear Sans}
+% 	\setmainfont{Amiri}
+% 	\setdefaultlanguage{arabic}
+% 	\setotherlanguage{english}
+% \fi
+
+% enable mathematical syntax for some symbols like \varnothing
+\usepackage{amssymb}
+
+% bubble diagram configuration
+\usepackage{smartdiagram}
+\smartdiagramset{
+	% default font size is \large, so adjust to harmonize with sidebar layout
+	bubble center node font = \footnotesize,
+	bubble node font = \footnotesize,
+	% default: 4cm/2.5cm; make minimum diameter relative to sidebar size
+	bubble center node size = 0.4\sidebartextwidth,
+	bubble node size = 0.25\sidebartextwidth,
+	distance center/other bubbles = 1.5em,
+	% set center bubble color
+	bubble center node color = maincolor!70,
+	% define the list of colors usable in the diagram
+	set color list = {maincolor!10, maincolor!40,
+	maincolor!20, maincolor!60, maincolor!35},
+	% sets the opacity at which the bubbles are shown
+	bubble fill opacity = 0.8,
+}
+
+%-------------------------------------------------------------------------------
+%                            PERSONAL INFORMATION
+%-------------------------------------------------------------------------------
+%% mandatory information
+% your name
+\cvname{Panda Bear}
+% job title/career
+\cvjobtitle{Panda Scientist,\\[0.2em] Panda of the Year}
+
+%% optional information
+% profile picture
+\cvprofilepic{pics/profile.png}
+% logo picture
+\cvlogopic{pics/logo_txt.png}
+
+% NOTE: ordering in sidebar will mimic the following order
+% date of birth
+\cvbirthday{\today}
+% short address/location, use \newline if more than 1 line is required
+\cvaddress{Park Ave.~1, 555 555 B-Woods}
+% phone number
+\cvphone{+86 555 555 555}
+% personal website
+\cvsite{https://pandascience.net}
+% email address
+\cvmail{panda@bamboo.cn}
+% pgp key
+\cvkey{4096R/FF00FF00}{0xAABBCCDDFF00FF00}
+% any other custom entry
+\cvcustomdata{\faFlag}{Chinese}
+
+%-------------------------------------------------------------------------------
+%                              SIDEBAR 1st PAGE
+%-------------------------------------------------------------------------------
+% add more profile sections to sidebar on first page
+\addtofrontsidebar{
+	% include gosquare national flags from https://github.com/gosquared/flags;
+	% naming according to ISO 3166-1 alpha-2 country codes
+	\graphicspath{{pics/flags/shiny/}}
+
+	% social network accounts incl. proper hyperlinks
+	\sidesection{Social Network}
+		\begin{icontable}{2.5em}{1em}
+			\social{\faLeaf}
+				{https://de.overleaf.com/latex/templates/forty-seconds-cv/pztcktmyngsk}
+				{Overleaf Template Link}
+			\social{\faGithub}
+				{https://github.com/PandaScience/FortySecondsCV}
+				{Github Project Page Link}
+		\end{icontable}
+
+	\sidesection{Languages}
+		\pointskill{\flag{CN.png}}{Chinese}{5}
+		\pointskill{\flag{DE.png}}{German}{3}
+	\pointskill{\flag{GB.png}}{English}{3}
+	\pointskill{\flag{FR.png}}{French}{3}
+
+	\sidesection{Hard Skills}
+		\skill{\faBalanceScale}{Sleeping almost all day}
+		\skill{\faSitemap}{Eating a lot of bamboo sprouts}
+		\skill{\faGraduationCap}{Relaxing rest of the day}
+
+	\sidesection{Soft Skills}
+		\pointskill{\faHome}{Looking Cute}{4}[4]
+			\skill[1.8em]{\faCompress}{No need to specify further}
+		\pointskill{\faChild}{Chillin' hard}{3}[4]
+			\skill[1.8em]{\faCompress}{On a tree}
+			\skill[1.8em]{\faCompress}{In the grass}
+}
+
+
+%-------------------------------------------------------------------------------
+%                              SIDEBAR 2nd PAGE
+%-------------------------------------------------------------------------------
+\definecolor{pastelgreen}{HTML}{D7ECD9}
+\definecolor{pastelpurple}{HTML}{D5D6EA}
+\definecolor{pastelorange}{HTML}{F5D5CB}
+\definecolor{pastelyellow}{HTML}{F6F6EB}
+
+\addtobacksidebar{
+	\sidesection{About Me}
+	\aboutme{
+		The giant panda is a terrestrial animal and primarily spends its life
+		roaming and feeding in the bamboo forests of the Qinling Mountains and in
+		the hilly province of Sichuan.
+	}
+
+	\sidesection{Diagrams}
+	\begin{sidebarminipage}
+		\chartlabel[pastelgreen]{Bubble}
+		\chartlabel[pastelgreen]{Diagrams}
+		\chartlabel[pastelpurple]{with}
+		\chartlabel[pastelpurple]{proper}
+		\chartlabel[pastelorange]{overflow}
+		\chartlabel[pastelorange]{protection}
+		\chartlabel[pastelyellow]{for}
+		\chartlabel[pastelyellow]{labels}
+	\end{sidebarminipage}
+
+	\begin{figure}\centering
+		\smartdiagram[bubble diagram]{
+			\textcolor{white}{\textbf{Being a}} \\
+			\textcolor{white}{\textbf{Panda}}, % center bubble
+			\textcolor{black!90}{Eating},
+			\textcolor{black!90}{Sleeping},
+			\textcolor{black!90}{Rolling},
+			\textcolor{black!90}{Playing},
+			\textcolor{black!90}{Chilling}
+		}
+	\end{figure}
+
+	\chartlabel{Wheel Chart}
+
+	\wheelchart{3.7em}{2em}{%
+	20/3em/maincolor!50/Chill,
+	15/3em/maincolor!15/Play,
+	30/4em/maincolor!40/Sleep,
+	20/3em/maincolor!20/Eat
+	}
+
+	\sidesection{Barskills}
+	\barskill[1ex]{\faSkyatlas}{Wearing asian rice hats}{60}
+	\barskill[2ex]{\faImage}{Playing Chess}{30}
+	\barskill[3ex]{\faMusic}{Playing the bamboo flute}{50}
+
+	\sidesection{Memberships}
+	\begin{memberships}
+		\membership[4em]{pics/logo.png}{PandaScience.net}
+		\membership[4em]{pics/logo.png}{Some longer text spanning over more than
+			only one line}
+	\end{memberships}
+}
+
+
+%-------------------------------------------------------------------------------
+%                         TABLE ENTRIES RIGHT COLUMN
+%-------------------------------------------------------------------------------
+\begin{document}
+
+\makefrontsidebar
+
+\cvsection{Working Experience}
+\begin{cvtable}[3]
+	\cvitem{currently}{CEO The Panda Way}{Start Up}{Chief executive officer, Head
+		developer and yoga ambassador of 'The Panda Way' - A company from pandas
+		for pandas.}
+	\cvitem{05/2015 -- 08/2018}{Panda Scientist}{Bamboo University}{
+		Reasearching the impact of adequate bamboo nutrition compared to
+		conventional feeding methods.}
+	\cvitem{2010 -- 2015}{Bamboo Broker}{Stock Exchange}{Continuously achieving
+		better bamboo bangs for the buck.}
+\end{cvtable}
+
+
+\cvsection{Education}
+\cvsubsection{Postgraduate Training}
+\begin{cvtable}[1.5]
+	\cvitem{2009 -- 2010}{Post-Doc Panda Studies}{Panda Academy}
+		{In-depth studies on the impact of bamboo nutrition for young pandas and
+		its relation to relaxing, sleeping and snoozing parts of the day.}
+	\cvitem{2008 -- 2009}{Research Stay Europe}{European Panda Labs}
+		{Spending one year abroad teaching european panda facilities about the
+		newest findings and research in the field of asian rice hat covers and
+		applications for bamboo as a material.}
+\end{cvtable}
+
+
+\cvsubsection{Study}
+\begin{cvtable}[1.5]
+	\cvitem{2006 -- 2008}{Master Studies Panda Science}{Panda Academy}
+		{Focus: Advanced rice hat studies and nouveau rain-reflecting cover
+		materials.}
+	\cvitem{}{Master Thesis ($\varnothing\, 1,0$)}{Asian Rice Hat Institute}
+		{Impact of solar radiation onto rice hat cover materials with special
+		attention to water resistance.}
+	\cvitem{2003 -- 2006}{Bachelor Studies PandaScience}{Panda Academy}
+		{Focus: Bamboo morphology and its usage in different craftmanships.}
+	\cvitem{}{Bachelor Thesis ($\varnothing\, 1,0$)}{Bamboo Institute}
+		{The bambo flute: An underestimated instrument in orchestras?}
+\end{cvtable}
+
+\cvsection{Publications}
+\begin{cvtable}
+	\cvpubitem{Cooking: 100 recipes for lazy Pandas}{Me and My Panda Friends}
+		{Panda's Culinary World}{2010}
+	\cvpubitem{Pandastasia}{Still Me}{Bamboo Books Assoc.}{2005}
+\end{cvtable}
+
+\cvsection{Awards}
+\begin{cvtable}
+	\cvitem{2010 -- now}{Panda of the Year}{Panda World Forum}{}
+	\cvitem{2005 -- now}{Face of World Wide Fund for Nature}{WWF}{}
+	\cvitem{2000}{Winner of Bamboo Sprouts Eating Contest}{Bamboo Society}{}
+\end{cvtable}
+
+
+\cvsection{Extra-Curricular Activities}
+\begin{cvtable}
+	\cvitemshort{Relaxing}{Master the fine art of relaxing everywhere}
+	\cvitemshort{Music}{Playing the bamboo flute in the 1st Panda Orchestra}
+	\cvitemshort{Education}{Teaching young pandas to be more panda-like}
+\end{cvtable}
+
+
+\newpage
+\makebacksidebar
+% \newgeometry{
+% 	top=\topbottommargin,
+% 	bottom=\topbottommargin,
+% 	right=\leftrightmargin,
+% 	left=\leftrightmargin
+% }
+
+\cvsection{section}
+\cvsubsection{Subsection}
+\begin{cvtable}
+	\cvitem{<dates>}{<cv-item title>}{<location>}{<optional: description>}
+\end{cvtable}
+
+\cvsection{cvitem}
+\cvsubsection{Multi-line with longer description}
+\begin{cvtable}
+	\cvitem{date}{Description}{location}{Some longer and more detailed
+		description, that takes two lines of space instead of only one.}
+	\cvitem{date}{Description}{location}{Some longer and more detailed
+		description, that takes two lines of space instead of only one.}
+	\cvitem{date}{Description}{location}{Some longer and more detailed
+		description, that takes two lines of space instead of only one.}
+\end{cvtable}
+
+\cvsubsection{One-line without description}
+\begin{cvtable}
+	\cvitem{Award}{One-line description}{Sponsor}{}
+	\cvitem{Award}{One-line description}{Sponsor}{}
+	\cvitem{Award}{One-line description}{Sponsor}{}
+\end{cvtable}
+
+\cvsection{cvitemshort}
+\cvsubsection{One-line}
+\begin{cvtable}
+	\cvitemshort{Key}{Some further description}
+	\cvitemshort{Key}{Some further description}
+	\cvitemshort{Key}{Some further description}
+\end{cvtable}
+
+\cvsubsection{Multi-line with longer description}
+\begin{cvtable}
+	\cvitemshort{Key}{Some further description. Can fill even more than
+		only one single line while still keeping the correct indendation level.}
+	\cvitemshort{Key}{Some further description. Can fill even more than
+		only one single line while still keeping the correct indendation level.}
+	\cvitemshort{Key}{Some further description. Can fill even more than
+		only one single line while still keeping the correct indendation level.}
+\end{cvtable}
+
+\cvsection{cvpubitem}
+\begin{cvtable}
+	\cvpubitem{Publication title}{Authors}{Journal}{Year}
+	\cvpubitem{Publication title}{Authors}{Journal}{Year}
+	\cvpubitem{Publication title that is spanning over multiple lines and still
+		does not look too bad}{Authors}{Journal}{Year}
+\end{cvtable}
+
+\cvsignature
+
+\end{document}