% Copyright 2025 Daniel Nagel % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is Daniel Nagel % \RequirePackage{expl3} \ProvidesExplPackage{fontawesome6}{2025/04/20}{6.7.2}{Font Awesome 6} \msg_new:nnnn{fontawesome6}{incompatible-version} {Incompatible~version~of~Font~Awesome~already~loaded} {You~tried~to~load~the~fontawesome6~package~but~there~are~already~some~icons~ from~Font~Awesome~defined~in~your~document.~This~probably~means~that~a~ package~for~another~version~of~Font~Awesome~(likely~the~fontawesome~package~ for~Font~Awesome~5)~is~already~loaded.~Loading~multiple~versions~is~not~ supported.~Please~remove~all~but~one~version~of~Font~Awesome~from~your~ document.} \AddToHook{package/fontawesome/before}{\msg_error:nn {fontawesome6} {incompatible-version}} \cs_if_free:NF \faHome {\msg_error:nn {fontawesome6} {incompatible-version}} \RequirePackage{l3keys2e} \str_new:N\l_fontawesome_style_str \cs_new_protected:Npn\fontawesome_set_style:n{ \str_set:Nn\l_fontawesome_style_str } \keys_define:nn{fontawesome6} { pro .value_forbidden:n = true, pro .tl_set:N = \c__fontawesome_kind_tl, pro .default:n = pro, free .value_forbidden:n = true, free .tl_set:N = \c__fontawesome_kind_tl, free .default:n = free, fixed .bool_set:N = \c__fontawesome_fixed_bool, fixed .default:n = true, style .code:n = { \fontawesome_set_style:n{#1} } } \keys_set:nn{fontawesome6}{free} \ProcessKeysOptions{fontawesome6} \str_if_empty:NT \l_fontawesome_style_str { \fontawesome_set_style:n{solid} } \RequirePackage{xparse} \str_case:onTF\c_sys_engine_str{ {luatex}{} {xetex}{} }{ \RequirePackage{fontawesome6-utex-helper} }{ \RequirePackage{fontawesome6-generic-helper} } \msg_new:nnnn{fontawesome6}{icon-not-found} {The~requested~icon~#1~was~not~found.} {Maybe~you~mistyped~the~icon~name~or~you~are~using~the~wrong~version~of~Font~Awesome~6.~ Please~check~the~Font~Awesome~Cheatsheet~to~verify~the~spelling~of~#1.~ If~you~want~to~use~a~Pro~icon,~you~need~to~have~Font~Awesome~6~Pro~installed~and~ use~XeLaTeX~or~LuaLaTeX.~Then~you~can~activate~Pro~with~the~[pro]~option.~ If~you~use~XeLaTeX~or~LuaLaTeX,~you~can~also~try~updating~the~Font~Awesome~6~font~files~ to~make~icons~of~newer~versions~of~Font~Awesome~available.} \msg_new:nnnn{fontawesome6}{style-substitution} {The~requested~icon~#1~has~been~replaced~by~the~solid~version} {The~icon~#1~is~not~available~in~the~style~#2.~The~solid~version~will~be~used~instead.~ To~use~a~#2~style~#1~icon,~you~probably~need~Font~Awesome~6~Pro.~ To~use~Pro,~you~need~to~have~Font~Awesome~6~Pro~installed~and~ use~XeLaTeX~or~LuaLaTeX.~Then~you~can~activate~Pro~with~the~[pro]~option.} \NewDocumentCommand\faPreselectedIcon{m O{\str_use:N\l_fontawesome_style_str}}{ \fontawesome_use_icon:nn{#2}{#1} } \NewDocumentCommand\faIcon{O{\str_use:N\l_fontawesome_style_str} m}{ \fontawesome_use_icon:nn{#1}{#2} } \NewDocumentCommand\faStyle{m}{ \fontawesome_set_style:n{#1} } \cs_new_protected:Npn\fa__select_ii:nnn#1#2#3{ \cs_if_exist_use:cF {fa__#1_#2#3:} { \faPreselectedIcon{#1}#2 } } \cs_new_protected:Npn\fa__select:nn#1#2{ \cs_if_exist_use:cF {fa__#1_#2:} { \peek_catcode:NTF 0 { \fa__select_ii:nnn {#1}{#2} }{ \faPreselectedIcon{#1}#2 } } } \cs_new_protected:Npn\fa__select:nw#1{ \peek_catcode:NTF 0 {\fa__select:nn {#1}} {\faPreselectedIcon{#1}} }