我正在使用家谱符号\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
并且单独加载notextcomp
也textcomp
不会改变这种行为。
有什么想法可以保留这些符号的原始外观?
答案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}
从 2020 年起,您可以从序言中删除和inputenc
包textcomp
。当前版本的 LaTeX 将默认加载它们。
稍微补充一点,您可能希望用不间断空格 将这些符号与日期分开,~
而不是\,
。这样,TeX 就不会在符号和日期之间断线。
答案4
使用
\usepackage[euro,warn]{textcomp}
\usepackage[notextcomp]{kpfonts}
为\textmarried
:) 工作,感谢 David Woitkovski。