![基于 LaTeX 宏的 LaTeMplate 宏](https://linux22.com/image/362743/%E5%9F%BA%E4%BA%8E%20LaTeX%20%E5%AE%8F%E7%9A%84%20LaTeMplate%20%E5%AE%8F.png)
我正在尝试制作另一个类似 LaTeX 的宏。它应该完全基于原始的 LaTeX 组合,并进行一点小改动,然后就可以正常工作。长话短说,它没有。由于我对 LaTeX 和 TeX 宏中所有那些花哨的命令不太了解,所以我向你求助。我想要做的就是将 TeX 的 X 改为 M。后面跟着一个 MWE。
source2e.pdf 中的原始定义已被注释掉,但本质上,这是我试图使其工作的。好吧,我这样做的方式是一种糟糕的解决方法,因为它(几乎)适合标题,但我想在我的花哨标题中显示我的作品,当然,那里的 A 太大了。所以我需要使用原始定义,它使用相对大小,不能只使用漂亮的 raisebox 解决方法。
\documentclass{article}
\usepackage{lipsum}
%\def\latemplate{L\kern-.36em{\sbox\z@ T\vbox to\ht\z@{\hbox{\check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont A}\vss}}\kern -.15emT\kern-.1667em\lower.5ex\hbox{E}\kern-.125emMplate\@}
\def\latemplate{L\kern-.3em\raisebox{.5ex}{\large A}\kern-.14emT\kern-.1667em\lower.5ex\hbox{E}\kern-.125emMplate\@}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[L]{\footnotesize\latemplate}
\title{\latemplate{} fo' ma momma}
\begin{document}
\maketitle
\clearpage
\section{first section}
\lipsum[1]
\end{document}
文档标题看起来不错:
标题不太一样:
答案1
诀窍是根据当前字体大小计算较小的字体,这是通过\check@mathfonts
和使用来完成的\sf@size
。
以下参数是为 Libertinus Serif(Linux Libertine 的后继者)定制的,其他字体将需要不同的值。请调整它们以适应。
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Libertinus Serif}
\makeatletter
\DeclareRobustCommand{\LaTeMplate}{%
L\kern-.27em
{\sbox\z@ T%
\vbox to\ht\z@{\hbox{%
\check@mathfonts\fontsize\sf@size\z@
\math@fontsfalse\selectfont
A%
}\vss}%
}%
\kern-.12em
T\kern-.12em
\lower.35ex\hbox{E}\kern-.125em Mplate%
}
\makeatother
\begin{document}
\LaTeMplate
{\footnotesize\LaTeMplate}
{\Large\LaTeMplate}
\end{document}