我在使用 \textsuperscript 和 newtxttext 包时遇到了问题。当我使用 \textsuperscript 时,它并没有被“关闭”:MWE
\documentclass[a4paper,12pt]{scrbook}
\usepackage{newtxtext}
\begin{document}
21\textsuperscript{th} century
\end{document}
21\textsuperscript{th} \textnormal{century}
没有必要“关闭” \textsuperscript。对吗?有什么想法吗?
编辑:我正在使用 shareLatex 和 pdfLatex。文件列表输出:
scrbook.cls 2017/04/13 v3.23 KOMA-Script document class (book)
scrkbase.sty 2017/04/13 v3.23 KOMA-Script package (KOMA-Script-dependent bas
ics and keyval usage)
scrbase.sty 2017/04/13 v3.23 KOMA-Script package (KOMA-Script-independent b
asics and keyval usage)
keyval.sty 2014/10/28 v1.15 key=value parser (DPC)
scrlfile.sty 2017/04/13 v3.23 KOMA-Script package (loading files)
tocbasic.sty 2017/04/13 v3.23 KOMA-Script package (handling toc-files)
scrsize12pt.clo 2017/04/13 v3.23 KOMA-Script font size class option (12pt)
typearea.sty 2017/04/13 v3.23 KOMA-Script package (type area)
newtxtext.sty 2017/05/28 v1.523
fontaxes.sty 2014/03/23 v1.0d Font selection axes
xkeyval.sty 2014/12/03 v2.7a package option processing (HA)
xkeyval.tex 2014/12/03 v2.7a key=value parser (HA)
etoolbox.sty 2017/01/02 v2.4 e-TeX tools for LaTeX (JAW)
fontenc.sty
t1enc.def 2017/04/05 v2.0i Standard LaTeX file
textcomp.sty 2017/04/05 v2.0i Standard LaTeX package
ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file
t1ntxtlf.fd 2015/01/17 v1.0 font definition file for T1/ntx/tlf
ts1cmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions
t1ntxsups.fd 2015/01/17 v1.0
非常感谢本杰明
答案1
您正在使用的newtxtext
版本 1.523 存在错误\textsuperscript
;您可以按如下方式修复它
\documentclass[a4paper,12pt]{scrbook}
% fix the error in version 1.523 of newtxtext
\let\latextextsuperscript\textsuperscript
\AtBeginDocument{\let\textsuperscript\latextextsuperscript}
\usepackage{newtxtext}
\begin{document}
21\textsuperscript{th} century
\end{document}
您可以看到代码newtxtext.sty
实际上是如何修复的http://tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/newtx/newtxtext.sty?r1=44458&r2=45074&sortby=date
该软件包删除了 的错误用法\textsu
,这与我在建议的补丁中所做的相同。
答案2
我可以用 Overleaf 重现这个问题。ShareLaTeX 和 Overleaf 目前使用的是非常旧的 TeX 发行版。
在我看来,\textsuperscript
在这种情况下没有任何参数,它的工作方式类似于\bfseries
等。因此,以下代码可以解决问题:
\documentclass[a4paper,12pt]{scrbook}
\usepackage{newtxtext}
\begin{document}
21{\textsuperscript th} century
\end{document}
您还可以执行类似操作
\documentclass[a4paper,12pt]{scrbook}
\usepackage{newtxtext}
\makeatletter
\let\@mycommand\textsuperscript
\renewcommand\textsuperscript[1]{{\@mycommand #1}}
\makeatother
\begin{document}
21\textsuperscript{th} century
\end{document}
结果: