我使用的字体 (Merriweather Sans) 将连字符有点太高了:
有什么方法可以修复整个文档的问题,
而且不影响其他字体?
测试文档:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{merriweather}
\begin{document}
\sf
h-y-p-h-e-n
% I want the code above to look like:
h\raisebox{-.15ex}{-}y\raisebox{-.15ex}{-}p\raisebox{-.15ex}{-}h\raisebox{-.15ex}{-}e\raisebox{-.15ex}{-}n
\end{document}
2014 年 3 月 31 日更新:Merriweather 字体已更新,添加了小写连字符。
答案1
正如 egreg 所说,这不能以通用方式完成。在这个答案中,我没有 merriweather 字体,所以我只是在标准 CM 字体上演示了该技术(并夸大了效果)。
可以通过激活来局部实现您的要求-
;但是,这会破坏很多东西,因为这意味着负号已被重新定义。因此,我在这里提出的折衷方案是宏对\newhyphenON
和\newhyphenOFF
。这样,您可以\newhyphenON
在仅使用移位连字符输入文本时将其打开,并在几乎所有其他情况下将其关闭。
在本 MWE 中,我将展示如何在\nehyphenOFF
调用 has 时,将减号恢复为\raisebox
。但在\nehyphenON
调用 时,移位的连字符仍保留在原处。
\documentclass{article}
\usepackage[T1]{fontenc}
%\usepackage{merriweather}
\sffamily
\begin{document}
\let\svhyphen-
\def\newhyphen{\raisebox{-.5ex}{\svhyphen}}
\catcode`-\active
\def\newhyphenON{\catcode`-\active\def-{\newhyphen}}
\def\newhyphenOFF{\catcode`-=12\let-\svhyphen}
\catcode`-=12
\newhyphenON
h-y-p-h-e-n
\newhyphenOFF
h-y-p-h-e-n X\raisebox{-1ex}{X}
\newhyphenON
h-y-p-h-e-n
\newhyphenOFF
h-y-p-h-e-n
\end{document}