在 LaTeX 中格式化特定世纪的可能方法?

在 LaTeX 中格式化特定世纪的可能方法?

我在报告中写了一点历史,我想知道在 LaTeX 中格式化世纪(例如 XX 世纪)有哪些可能的方法,以及在排版中哪种方法最常用和最受欢迎。实际上,我正在使用以下方法:

XX$^{\circ}$所以我有像XX°这样的东西但是我不太喜欢,圆圈太低了。。。

答案1

序数指示符 º/º 和 ª/ª可以分别用\textsuperscript{o}和排版\textsuperscript{a}

虽然french选项babel实际上使用了一个\realsuperscript将上标稍微向下对齐的宏,但是italian选项却没有这个。

utf8另一种方法是通过包的选项输入 Unicode 字符inputenc(当然,您需要对文档进行 UTF-8 编码)。

这些textcomp包的定义看起来有些不同并且带有下划线\textordmasculine\textordfeminine

代码

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\let\up\textsuperscript
\begin{document}
20\up{o} secolo\par 20º secolo \par
20\up{a} Vespa\par 20ª Vespa
\end{document}

输出

在此处输入图片描述

答案2

我认为使用 XX 作为 20 世纪没有问题……但如果您想稍微改变它,您应该只改变它的样式,例如:

\emph{XX} Century
\textsl{XX} Century
\textbf{XX} Century
\texttt{XX} Century
\textsc{XX} Century

看起来像这样:

在此处输入图片描述

当然,请随意结合(当然要保持美观和视觉理性)以下任何选项。

答案3

我不同意@Mario SE 的回答(没有个人目的 :-),他建议使用\text<sth>宏来格式化世纪数字。我几乎从来不会在文档主体中使用它们,尤其是当它们用于标记时,就像这里的情况一样。甚至混合它们也不是一个好主意。你可以改为这样做:

\documentclass{article}
\def\centuryname{century}
\let\up\textsuperscript
\let\markcent\textsc
  \newcommand*{\century}[1]
  {\markcent{\uppercase\expandafter{\romannumeral #1\relax}}\up{o} \centuryname}

\begin{document}
\century{20}
\end{document}

(感谢@Qrrbrbirlbel 的回答)。

编辑:关于“o”等的位置,尝试另一种定义\up。替换\let\up\textsuperscript

\def\up#1{%
\edef\tmp{\the\fontdimen14\textfont2}%
\fontdimen14\textfont2=5.5pt%
\textsuperscript{#1}%
\fontdimen14\textfont2=\tmp%
}

最后,你可以通过以下方式编写一些更具可定制性的代码:

\newcommand*{\up}[2][5.5pt]{%
\edef\tmp{\the\fontdimen14\textfont2}%
\fontdimen14\textfont2=#1%
\textsuperscript{#2}%
\fontdimen14\textfont2=\tmp%
}

然后可以像 一样使用\up[height correction]{superscript}

相关内容