画一条线,中间有一个图标

画一条线,中间有一个图标

我是 \LaTeX 的新手,我正在使用 ModernCV 和大量谷歌搜索来撰写我的简历。

我使用经典样式,并希望通过在章节标题中添加图标使文档看起来更直观。目前我计划使用 FontAwesome 图标。

到目前为止,我重新定义了\section命令以包含第三个参数(要使用的图标/字符)。

\documentclass[a4paper, 11pt, color, final, roman]{moderncv}
\usepackage[scale=0.9]{geometry}
\AtBeginDocument{\recomputelengths}
\usepackage{fontspec}

\moderncvstyle{classic}
\moderncvicons{awesome}
\sethintscolumnlength{3cm}

\RenewDocumentCommand{\section}{smm}{ % third argument is [m]andatory
  \par\addvspace{2.5ex}
  \phantomsection{}
  \addcontentsline{toc}{section}{#2}
  \cvitem[0ex]{
    \color{color1} % Use the CV color
    % Left line
    \strut\raggedleft\raisebox{\baseletterheight}{
      \rule{\hintscolumnwidth - 2cm}{0.3ex}}
    % The icon
    \fontsize{.5cm}{0cm}#3
    % Right line
    \strut\raggedleft\raisebox{\baseletterheight}{
      \rule{\hintscolumnwidth - 2cm}{0.3ex}}
  }
  {\strut\sectionstyle{#2}} % Section title
}

\firstname{gnxr}
\lastname{demo}

\begin{document}

\section{Compétences}{\faWrench}
\closesection{}

\end{document}

目前的输出是:

章节标题旁边的扳手图标

看起来还不错。但是,我觉得这是一个不靠谱的解决方案。我不知道图标的实际宽度,所以所有测量值(2cm,0.5cm)都是针对这个特定图标反复试验的结果。其他字符的结果都是错误的:

一部分以字母“m”作为图标,另一部分以字母“i”作为图标。我们可以看到线条的宽度不一样。

另外,线条和图标之间还有一个小的不必要的空间(例如,我们可以注意到图标和右线之间的空间比左线之间的空间大)。

我认为一个好的解决方案是绘制一条线而不是两条线,然后在线的(计算)中心处绘制图标,并使用(固定宽度)白色背景。这是好方法吗?我该怎么做?

答案1

您可以使用 来\hbox固定特定的宽度,然后使用 用\leaders线填充两侧的框,直到达到指定的宽度:

\documentclass[a4paper, 11pt, color, final, roman]{moderncv}
\usepackage[scale=0.9]{geometry}
\AtBeginDocument{\recomputelengths}
\usepackage{fontspec}

\moderncvstyle{classic}
\moderncvicons{awesome}
\sethintscolumnlength{3cm}

\RenewDocumentCommand{\section}{smm}{% third argument is [m]andatory
  \par\addvspace{2.5ex}%
  \phantomsection{}%
  \addcontentsline{toc}{section}{#2}%
  \cvitem[0ex]{%
    \strut\hbox to \hintscolumnwidth{%
      \color{color1}%
      \fontsize{.5cm}{0cm}\selectfont
      \leaders\hrule width-\baseletterheight height\dimexpr\baseletterheight+0.3ex\relax\hfill
      \space #3
      \leaders\hrule width-\baseletterheight height\dimexpr\baseletterheight+0.3ex\relax\hfill
    }%
  }%
  {\strut\sectionstyle{#2}}% Section title
}

\firstname{gnxr}
\lastname{demo}

\begin{document}

\section{Compétences}{\faWrench}
\closesection{}

\end{document}

你可能会注意到很多行都以 结尾%。如果没有这个,TeX 会在那里插入一个空格,从而破坏对称性。

相关内容