垂直居中水平线与文本在同一行?

垂直居中水平线与文本在同一行?

我正在尝试修改很棒的简历使得水平线位于线的垂直中心。 尝试将水平线垂直居中

相关代码行awesome-cv.cls声明如下:

\def\vhrulefill#1{\leavevmode\leaders\hrule\@height#1\hfill \kern\z@}

我读过另一个答案,说要使用深度来实现这一点,但玩了一段时间后,我似乎还是做不到。请帮忙。

答案1

您还可以指定深度,可以\@depth<some length>在其后添加\@height#1(或在其前添加,顺序无关紧要)。该版本\vhrulefill还允许您指定深度,如下#2所示:

\makeatletter %% <- change @ so that it can be used in command sequences
\def\myrulefill#1#2{\leavevmode\leaders\hrule\@height#1\@depth#2\hfill \kern\z@}
\makeatother  %% <- change @ back

定义好后,就可以生成一条线,其顶部<top从基线凸起,底部凸起<bottom>\myrulefill{<top>}{-<bottom>}请注意减号,这是必需的,因为线的深度实际上是它延伸的距离以下基线。

您没有具体说明“居中”是什么意思,但我至少可以想到三种可能性:

  1. 以大写字母 X 为中心

    这似乎就是您的图片所显示的。您可以使用以下方法制作这样的粗线#1

    \newcommand*\crulefill[1]{\myrulefill
        {\dimexpr(\fontcharht\font`X+#1)/2}{\dimexpr(-\fontcharht\font`X+#1)/2}}
    

    我用它\fontcharht来获取字母的高度X像这儿)使用当前字体并\dimexpr使用尺寸进行计算(像这儿)。

  2. 以小写字母 x 为中心

    字母 x 的高度为1ex,因此如果这是您想要的,您可以使用以下方式将规则置于中心.5ex

    \renewcommand*\crulefill[1]{\myrulefill{\dimexpr(1ex+#1)/2}{\dimexpr(-1ex+#1)/2}}
    
  3. 以数学轴为中心

    数学轴是一条假想线,数学运算符(例如 、 和 )和分数中的横线都以该+线为-中心。对于 Computer Modern,数学轴的位置略高于基线。以下是获取以数学轴为中心的规则的方法:*\rightarrow.5ex

    \makeatletter
    \renewcommand*\crulefill[1]{%
      \settoheight\@tempdima{$\m@th\vcenter{}$}%
      \myrulefill{\dimexpr\@tempdima+#1/2}{\dimexpr-\@tempdima+#1/2}%
    }
    \makeatother
    

    这用于创建一个以数学轴为中心的空框,并使用.f\vcenter{}将其高度存储在临时寄存器中\@tempdima\settoheight

%有些行末尾有 ,其原因在这个答案顺便一提。)

示范:

\documentclass{article}

\makeatletter %% <- change @ so that it can be used in command sequences
\def\myrulefill#1#2{\leavevmode\leaders\hrule\@height#1\@depth#2\hfill \kern\z@}
\makeatother %% <- change @ back

\begin{document}

% ================================== %
%  Centred at half the height of X:  %
% ================================== %
\newcommand*\crulefill[1]{\myrulefill
  {\dimexpr(\fontcharht\font`X+#1)/2}{\dimexpr(-\fontcharht\font`X+#1)/2}}

X \crulefill{1pt} $\leftarrow$ centred w.r.t.\@ X.

% ================================== %
%  Centred at half the height of x:  %
% ================================== %
\renewcommand*\crulefill[1]{\myrulefill{\dimexpr(1ex+#1)/2}{\dimexpr(-1ex+#1)/2}}

x \crulefill{1pt} $\leftarrow$ centred w.r.t.\@ x.

% =========================== %
%  Centred on the math axis:  %
%  =========================== %

\makeatletter
\renewcommand*\crulefill[1]{%
  \settoheight\@tempdima{$\m@th\vcenter{}$}%
  \myrulefill{\dimexpr\@tempdima+#1/2}{\dimexpr-\@tempdima+#1/2}%
}
\makeatother

$+$ \crulefill{1pt} $\leftarrow$ centred w.r.t.\@ math axis.

\end{document}

在此处输入图片描述

相关内容