![苏格兰-爱尔兰裔美国姓氏:如何实现美观的带有长音符号 (Mc) 的凸起 c?](https://linux22.com/image/352883/%E8%8B%8F%E6%A0%BC%E5%85%B0-%E7%88%B1%E5%B0%94%E5%85%B0%E8%A3%94%E7%BE%8E%E5%9B%BD%E5%A7%93%E6%B0%8F%EF%BC%9A%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%BE%8E%E8%A7%82%E7%9A%84%E5%B8%A6%E6%9C%89%E9%95%BF%E9%9F%B3%E7%AC%A6%E5%8F%B7%20(Mc)%20%E7%9A%84%E5%87%B8%E8%B5%B7%20c%EF%BC%9F.png)
我的姓氏是 McAnulty。它的发音多种多样,例如 Mick-Uh-Nulty、Mick-Nulty 和 Mack-Uh-Nulty,我从小就是这么发音的。小时候,家人的发音和含糊不清的苏格兰-爱尔兰语发音(而不是爱尔兰语发音)让我明白了这一点。(我生来就不是这个姓氏。我一辈子都有这个姓氏,所以这对我来说是一种有趣的特殊兴趣。)
我祖父经常把 McAnulty 这个名字的 c 写成小写,并加下划线。这不仅仅是装饰性的:它包含并解释了发音,因为带下划线的 Mc 是 Mac 的缩写,因此在一些较旧的字母排序系统中,Mc 的字母排序位于 Mab 和 Mad 之间。
影响我理解的相关链接:
- http://archiver.rootsweb.ancestry.com/th/read/Scotch-Irish/2000-01/0947887870
- http://archiver.rootsweb.ancestry.com/th/read/Scotch-Irish/2000-01/0947890937
- https://english.stackexchange.com/questions/334927/moving-the-lower-case-c-up-above-type-in-the-last-name-mcneil
我想在 LaTeX 中制作出这个带有下划线的凸起 c,但您可能很容易想象并理解,因为我从小就听着这个名字,并且在旧的手写体和符号中见过带有下划线的凸起 c,所以我对 c 下面的线应该如何呈现以及姓氏的整体形状有着特殊的审美观点。
我制作了这个:
{\LARGE\scheader \textsc{dan m{\large\raisebox{0.35ex}{{\underline{\smash{c}}}}}{\kern 0.05pc a}nulty}}
和这个:
{\LARGE\scheader \textsc{dan m{\large\raisebox{0.30ex}{c}}anulty}}
两者都与我想象的不太相符。下面的示例图像显示下划线比字母更窄,理想情况下,它的右侧应该与 c 的右侧匹配。我设想的正确凸起和下划线方法包括:
虽然我可以用我当前的代码控制 c 的高度和大小,但使用灵魂库我可以控制下划线的接近度和厚度(参见灵魂图书馆示例),目前我还没有找到很好的手段来控制字母下方线条的宽度。
我相信下划线被称为马克龙如下。
在这种情况下,有人能对如何正确调整下划线以达到美观效果提出好的建议吗?
我将非常感激任何回应、想法或建议。
答案1
您可以使用一个技巧来发现脚本大小。框的高度由 M 的高度与(减小的)c 的高度之差决定。
\documentclass{article}
\makeatletter
\newcommand{\Mc}{}
\DeclareRobustCommand{\Mc}{%
M%
\raisebox{\dimexpr\fontcharht\font`M-\height}{%
\check@mathfonts\fontsize{\sf@size}{0}\selectfont
\underline{c}%
}%
}
\makeatother
\begin{document}
\Mc Anulty
\Large\Mc Anulty
\end{document}
以下是
\textsc{\Mc Anulty}
扩展版本
- 下划线略短
- 宏也适用于
\MakeUppercase
\documentclass{article}
\makeatletter
\DeclareRobustCommand{\Mc}{\Mcx{c}}
\DeclareRobustCommand{\MC}{\Mcx{\textsc{c}}}
\DeclareRobustCommand{\Mcx}[1]{%
M%
\raisebox{\dimexpr\fontcharht\font`M-\height}{%
\check@mathfonts\fontsize{\sf@size}{0}\selectfont
\kern.1ex\underline{\kern-.1ex #1\kern-.1ex}\kern.1ex
}%
}
\expandafter\def\expandafter\@uclclist\expandafter{%
\@uclclist\Mc\MC
}
\makeatother
\begin{document}
\Mc Anulty \textsc{\Mc Anulty} \MakeUppercase{\Mc Anulty}
\Large \Mc Anulty
\end{document}
还有另一个版本ulem
(我不推荐soul
用于该应用程序)。
\documentclass{article}
\usepackage[normalem]{ulem}
\makeatletter
\DeclareRobustCommand{\Mc}{%
M%
\raisebox{\depth}{%
\check@mathfonts\fontsize{\sf@size}{\sf@size}\selectfont
\kern.3ex \uline{\kern-.3ex C\kern-.2ex}\kern.2ex
}%
}
\makeatother
\begin{document}
\Mc Anulty \textsc{\Mc Anulty} \MakeUppercase{\Mc Anulty}
\Large \Mc Anulty
\end{document}
答案2
这种方法的要点
c 与 M 的高度顶部对齐,而下划线位于基线上(这在 OP 提供的
McCormick
图像中很明显)底线的厚度可以作为可选参数提供
我把小 c 保持在标称尺寸,但改变其中的
1
可以\scalebox
改变它以适应。我把下划线的宽度设为
c
宽度的 70%。我还把\kern
下划线稍微向右移动了一点,以适应字母的不对称边距c
。宏
\Mc
将会改变以适应当前的字体大小和样式。
这是 MWE(第二个实例中使用的可选参数)。
\documentclass{article}
\usepackage{stackengine,graphicx}
\newcommand\Mc[1][.17ex]{%
\setbox0=\hbox{\scalebox{1}{c}}%
\setbox2=\hbox{M}%
M\stackengine{0pt}{\kern.07\wd0\rule{.7\wd0}{#1}}{\belowbaseline[-\ht2]{\copy0}}%
{O}{c}{F}{F}{L}%
}
\begin{document}
\Mc CORMICK
\LARGE\Mc[.13ex]CORMICK
\sffamily
\Mc CORMICK
\normalsize \Mc CORMICK
\end{document}
替代方案
这里,下划线不位于基线上,而是位于 下方规定的间隙处c
。其他变化包括 的大小c
已减小到 70%;下划线的粗细减小到.13ex
;可选参数指定 和 下划线之间的间隙c
(在第二个实例中应用)
\documentclass{article}
\usepackage{stackengine,graphicx}
\newcommand\Mc[1][.13ex]{%
\setbox0=\hbox{\scalebox{.7}{c}}%
\setbox2=\hbox{M}%
M\stackengine{\dimexpr\ht0-\ht2+#1}{\belowbaseline[-\ht2]{\copy0}}%
{\kern.07\wd0\rule[-.13ex]{.7\wd0}{.13ex}}%
{U}{c}{F}{F}{L}%
}
\begin{document}
\Mc CORMICK
\LARGE\Mc[.3ex]CORMICK
\sffamily
\Mc CORMICK
\normalsize \Mc CORMICK
\end{document}
方法 3
这试图实现 OP 的编辑,其中的高度c
不是设置为 M 的顶部,而是可能为顶部以下的衬线厚度。
因此,我所做的就是将下划线的粗细设为可选参数的值(默认为.12ex
,对于衬线字体,应设置为衬线粗细,对于无衬线字体,应设置为笔画粗细),并且将 距离C
行顶的距离也设为相同的下降量。此外,与之前的做法不同,我使用了大写字母 ,而不是小写字母C
。最后,我根据特写图中 OP 提供的边框线修改了下划线的宽度。除了右对齐下划线之外,我还估计 的边距为C
字母宽度的 7%,因此将下划线的宽度设为宽度的 86% C
(考虑到边距)减去作为可选参数提供的衬线宽度。
\documentclass{article}
\usepackage{stackengine,graphicx}
\newcommand\Mc[1][.12ex]{%
\setbox0=\hbox{\scalebox{.7}{C}}%
\setbox2=\hbox{M}%
M\stackengine{0pt}{\rule{\dimexpr.86\wd0-#1}{#1}\kern.07\wd0}%
{\belowbaseline[\dimexpr-\ht2+#1]{\copy0}}%
{O}{r}{F}{F}{L}%
}
\begin{document}
\Mc[.08ex]CORMICK
\LARGE\Mc[.08ex]CORMICK
\sffamily
\Mc CORMICK
\normalsize \Mc CORMICK
\end{document}
答案3
一个简单的解决方案是使用\textsuperscript
和soulutf8
。我定义了一个\Mc
命令,其中包含一个可选参数(用于调整上标的高度)c
和一个强制参数(名称的变量部分)。
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{soulutf8}
\newcommand\Mc[2][-0.6\depth]{\setul{0.25ex}{0.08ex}\setuloverlap{-0.08em}M\textsuperscript{\raisebox{#1}{\ul{c}}}#2}
\begin{document}
{\LARGE\textsc{dan \Mc{Anulty}}} \vspace{1cm}
{\normalsize\textsc{dan \Mc[0pt]{Anulty}}}
\end{document}
答案4
适用于 ConTeXt 用户的一个版本:
%\setupbodyfont[pagella]
%\setupbodyfont[scholas]
\setupbodyfont[termes]
\starttext
\newbox\MacMBox
\setbox\MacMBox\hbox{M}
\newbox\MacCBox
\setbox\MacCBox\hbox{c}
\newbox\MacKernBox
\setbox\MacKernBox\hbox{\inframed[offset=\zeropoint, width=fit]{Mc}}
\def\MacDelta{\dimexpr\wd\MacKernBox-\wd\MacMBox-\wd\MacCBox\relax}
\def\MacUWidth{\dimexpr\wd\MacCBox-.75\MacDelta\relax}
\def\MacRule{\vrule width \MacUWidth height .05em depth \zeropoint \relax}
\def\MacKern{\dimexpr\wd\MacKernBox-\wd\MacMBox-\wd\MacCBox\relax}
\def\Mac{%
M{%
\dontleavehmode{\raisebox{\dimexpr\ht\MacMBox-\ht\MacCBox}\hbox{c}}%
\kern-1.04\MacUWidth
\MacRule
\kern.08\MacUWidth
}%
}
\scale[scale=5000]{\Mac Anulty}
\Mac Anulty
\stoptext