我正在使用 XeLaTeX 和fontawesome
包。
这是我的 MWE:
\documentclass[]{article}
\RequirePackage{fontspec}
\RequirePackage{fontawesome}
\begin{document}
\section{\faGraduationCap \textbackslash faGraduationCap}
\section{\faBook \textbackslash faBook}
\faGraduationCap \textbackslash faGraduationCap\par\noindent
\faBook \textbackslash publications
\end{document}
这是裁剪后的结果:
如何获得带有fontawesome
图标的固定宽度?我不想每次都手动调整空间,解决方案应该适用于简单文本和内部部分。
编辑:如果我可以在左侧、右侧或居中之间进行选择,那就完美了。
答案1
使用 XeLaTeX 或 LuaLaTeX,诸如的命令\faBook
将被转换为\faicon{book}
,并带有预定义的表;因此,我们要更改的是的操作\faicon
,默认情况下为
\newcommand*{\faicon}[1]{{\csname faicon@#1\endcsname}}
只需将其更改为
\renewcommand*{\faicon}[1]{{\makebox[1.5em][c]{\csname faicon@#1\endcsname}}
恐怕您必须根据需要打印的最宽图标来视觉调整固定宽度。
\documentclass{article}
\usepackage{fontspec}
\usepackage{fontawesome}
\renewcommand*{\faicon}[1]{\makebox[1.5em][c]{\csname faicon@#1\endcsname}}
\begin{document}
\section{\faGraduationCap \textbackslash faGraduationCap}
\section{\faBook \textbackslash faBook}
\faGraduationCap \textbackslash faGraduationCap\par\noindent
\faBook \textbackslash publications
\end{document}
您可以为所有命令添加可选的对齐参数fontawesome
。这\ignorespaces
使得命令忽略后面的空格(即使存在),因此
\faBook Publications
\faBook[r] Publications
和
\faBook Publications
\faBook[r]Publications
如果添加可选参数,则无需担心空格。
\documentclass{article}
\usepackage{fontspec}
\usepackage{fontawesome}
\usepackage{xparse}
\RenewDocumentCommand{\faicon}{mO{c}}{%
\makebox[1.5em][#2]{\csname faicon@#1\endcsname}\ignorespaces
}
\begin{document}
\section{\faGraduationCap \textbackslash faGraduationCap}
\section{\faBook \textbackslash faBook}
\faGraduationCap \textbackslash faGraduationCap\par\noindent
\faBook \textbackslash publications
\noindent
\vrule\faGraduationCap\vrule\faBook\vrule \\
\vrule\faGraduationCap[l]\vrule\faBook[l]\vrule \\
\vrule\faGraduationCap[r]\vrule\faBook[r]\vrule
\end{document}
答案2
您可以将图标包裹在一个固定宽度的框中。此外,我会为此创建一个新宏,以便稍后轻松更改宽度,例如:
% !TeX program = xelatex
\documentclass{article}
\RequirePackage{fontspec}
\RequirePackage{fontawesome}
\newcommand{\faBox}[1]{%
\makebox[1.25em][l]{%
\csname fa#1\endcsname
}%
}
\begin{document}
\section{\faGraduationCap \textbackslash faGraduationCap}
\section{\faBook \textbackslash faBook}
\faGraduationCap \textbackslash faGraduationCap\par\noindent
\faBook \textbackslash publications
\section{\faBox{GraduationCap} \textbackslash faGraduationCap}
\section{\faBox{Book} \textbackslash faBook}
\faBox{GraduationCap} \textbackslash faGraduationCap\par\noindent
\faBox{Book} \textbackslash publications
\end{document}
第一个参数\makebox
是宽度,第二个(可选)参数是框内的对齐方式(c
enter = default、l
eft 或r
ight),最后一个参数是框的内容,实际上可能比框本身更宽。在这种情况下,它将溢出框。
\csname
并\endcsname
可以用来“构造”一个宏名并调用它。
答案3
我之所以回答它只是因为它有一个附加功能。但是,出于一个显而易见的原因,我不会将我的答案标记为已接受。
以下是改进Tobi 的回答。我添加了框内的对齐作为可选参数。
\documentclass[]{article}
\RequirePackage{fontspec}
\RequirePackage{fontawesome}
\newcommand{\faBox}[2][c]{%
\makebox[1em][#1]{%
\csname fa#2\endcsname
}%
}
\begin{document}
\section{No \textbackslash fabox}
\subsection*{\faGraduationCap \textbackslash faGraduationCap}
\subsection*{\faBook \textbackslash faBook}
\faGraduationCap \textbackslash faGraduationCap\par\noindent
\faBook \textbackslash publications
\section{Default \textbackslash fabox}
\subsection*{\faBox{GraduationCap} \textbackslash faGraduationCap}
\subsection*{\faBox{Book} \textbackslash faBook}
\faBox{GraduationCap} \textbackslash faGraduationCap\par\noindent
\faBox{Book} \textbackslash publications
\section{Left \textbackslash fabox}
\subsection*{\faBox[l]{GraduationCap} \textbackslash faGraduationCap}
\subsection*{\faBox[l]{Book} \textbackslash faBook}
\faBox[l]{GraduationCap} \textbackslash faGraduationCap\par\noindent
\faBox[l]{Book} \textbackslash publications
\section{Center (default) \textbackslash box}
\subsection*{\faBox[c]{GraduationCap} \textbackslash faGraduationCap}
\subsection*{\faBox[c]{Book} \textbackslash faBook}
\faBox[c]{GraduationCap} \textbackslash faGraduationCap\par\noindent
\faBox[c]{Book} \textbackslash publications
\section{Right \textbackslash box}
\subsection*{\faBox[r]{GraduationCap} \textbackslash faGraduationCap}
\subsection*{\faBox[r]{Book} \textbackslash faBook}
\faBox[r]{GraduationCap} \textbackslash faGraduationCap\par\noindent
\faBox[r]{Book} \textbackslash publications
\end{document}
这就是结果。