kpfonts 改变 textcomp 符号的外观

kpfonts 改变 textcomp 符号的外观

我正在使用家谱符号\textborn\textdied来自textcomp包的以及kpfonts

不幸的是,kpfonts加载了textcomp选项[full](除非有人指定notextcomp)但似乎修改了所述符号的外观。

如果您尝试以下带有和不带有的示例,kpfonts您会发现加载时符号会变得更重,更暗kpfonts

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[full]{textcomp}
%\usepackage{kpfonts}

\begin{document}

\textborn\,1984, \textdied\,2005

\end{document}

我希望使用这些符号的原始版本,同时继续使用kpfonts。为了实现这一点,我尝试使用 保存它们,\let但没有成功。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[full]{textcomp}
\let\oldtextdied\textdied
\let\oldtextborn\textborn
\usepackage{kpfonts}

\begin{document}

\textborn\,1984, \textdied\,2005

\oldtextborn\,1984, \oldtextdied\,2005

\end{document}

kpfonts并且单独加载notextcomptextcomp不会改变这种行为。

有什么想法可以保留这些符号的原始外观?

答案1

一个完整的解决方案,可以消除令人厌烦的特定编码命令:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[full]{textcomp}
\usepackage{kpfonts}

\DeclareTextSymbol{\textbornstd}{TS1}{98}
\DeclareTextSymbol{\textdiedstd}{TS1}{100}
\UndeclareTextCommand{\textborn}{TS1}
\UndeclareTextCommand{\textdied}{TS1}
\makeatletter
\DeclareTextCommandDefault{\textbornstd}{\tc@check@symbol2\textbornstd}
\DeclareTextCommandDefault{\textdiedstd}{\tc@check@symbol2\textdiedstd}
\makeatother
\DeclareRobustCommand{\textborn}{{\fontfamily{cmr}\selectfont\textbornstd}}
\DeclareRobustCommand{\textdied}{{\fontfamily{cmr}\selectfont\textdiedstd}}


\begin{document}

\textborn\,1984, \textdied\,2005

\end{document}

这是输出

在此处输入图片描述

\usepackage{kpfonts}这是注释掉添加的代码时的输出

在此处输入图片描述

因此您会发现两种情况下都使用了欧洲现代 TS1 字形。

答案2

一个 hack 的解决方案:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{kpfonts}
\newcommand{\oldtextdied}{{\fontfamily{cmr}\selectfont\textdied}}
\newcommand{\oldtextborn}{{\fontfamily{cmr}\selectfont\textborn}}

\begin{document}

\textborn\,1984, \textdied\,2005

\oldtextborn\,1984, \oldtextdied\,2005 

\end{document}

在此处输入图片描述

答案3

这里的问题不是包加载了textcomp。由于它现在是 LaTeX 内核的一部分,因此不再需要它,而是它让你可以在 8 位 TeX 中使用这些符号。问题是它kpfonts附带了一种覆盖这些符号的配套字体,而你不喜欢它。

因此,您可以使用 将 TS1 编码使用的配套字体更改回 Computer Modern substitutefont

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} % The default since 2018
\usepackage[full]{textcomp} % No longer needed as of 2020
\usepackage{kpfonts}
\usepackage{substitutefont}

\substitutefont{TS1}{\rmdefault}{cmr}
\substitutefont{TS1}{\sfdefault}{cmss}

\begin{document}

\textborn~1984, \textdied~2005

\end{document}

KP/Computer Modern 样本

从 2020 年起,您可以从序言中删除和inputenctextcomp。当前版本的 LaTeX 将默认加载它们。

稍微补充一点,您可能希望用不间断空格 将这些符号与日期分开,~而不是\,。这样,TeX 就不会在符号和日期之间断线。

答案4

使用

\usepackage[euro,warn]{textcomp}
\usepackage[notextcomp]{kpfonts}

\textmarried:) 工作,感谢 David Woitkovski。

相关内容