以下代码会产生一个奇怪的百分比符号,如下所示:
这是我的代码:
\documentclass[12pt, a4paper, twoside, %openright,
toc=listof, BCOR=5mm, bibliography=totoc, parskip=half]{scrreprt}
\usepackage{helvet}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\begin{document}
11-13\%
\end{document}
现在我使用了板块搜索并找到了这个解决方案:使用 mathspec 结合 Helvetica 和 Symbol 字体 但由于我对所有这些 LaTeX 包都不太熟悉,而且我没有使用它们,所以我不想直接将它们添加到我的代码中,而是想知道我需要添加哪些行才能使我的代码正常工作,而不会更改我可能不想要的任何其他内容。提前致谢
答案1
如果您确实想要与原始字体相匹配的 %,但没有“小蝴蝶结”(正如我对 Mico 的评论的解释),那么一个选项是定义一个新的\%
,覆盖有问题的“蝴蝶结”。在这里,我已使其适用于不同的文本大小变化。
在 MWE 中,我进行了定义\overlayclr
,以便您可以看到我正在绘制的内容(当我将其设置为红色时)。我\%
在最右边显示了原始内容,因此您可以看到修改后的字形的大小与原始字形相匹配。
\documentclass[12pt, a4paper, twoside, %openright,
toc=listof, BCOR=5mm, bibliography=totoc, parskip=half]{scrreprt}
\usepackage{helvet}
\usepackage[ngerman]{babel}
%\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{graphicx,xcolor,stackengine,scalerel}
\let\svpct\%
\def\overlayclr{white}
\renewcommand{\%}{\scalerel*{\stackon[0pt]{\stackon[0pt]{\normalsize\svpct}{\smash{%
\textcolor{\overlayclr}{\rotatebox{56.8}{\rule[-4.55pt]{2.5pt}{1.5pt}}}}}}%
{\smash{\textcolor{\overlayclr}{%
\rotatebox{27}{\kern-.84pt\rule[-2.5pt]{1.5pt}{2.5pt}}}}}}{\svpct}}
\begin{document}
\Huge11-13\%\quad{\def\overlayclr{red}11-13\%\svpct}\par
\normalsize11-13\%\quad{\def\overlayclr{red}11-13\%\svpct}
\end{document}
答案2
您可以使用以下方式获取任意系列的百分号
\DeclareRobustCommand{\%}{{%
\mbox{%
\fontencoding{\encodingdefault}%
\fontfamily{<family>}%
\selectfont
\symbol{`\%}%
}%
}}
唯一的问题就是选择正确的<family>
名称。对于 Helvetica 来说,名称应该是phv
,但百分号在衬线字体环境中会显得格格不入。
小蝴蝶结是衬线字体的惯用标志;在免费字体中,我看到 Kpfonts 和 Bookman 没有小蝴蝶结,但该符号的样式与默认字体又不兼容。
这是一个可能的选择<family>
:
如果您打算\%
在数学模式下使用,请更改\mbox
为\text
(并加载amsmath
)。
现在您已经能够体会到风格的差异,请坚持使用默认设置。
答案3
如果您想以 Helvetica 格式呈现默认百分号,而不改变文本字体的任何其他方面,您可以继续在序言中插入以下说明:
\usepackage{helvet} % select Helvetica as the sans-serif font
\let\origpercent\% % save the "original" "\%" macro
\renewcommand{\%}{\textsf{\origpercent}}