如何创建一个可以视为数字的命令?

如何创建一个可以视为数字的命令?

我需要在一些文本上放置一个符号,我想使用\hspace{#1}文本#1的宽度#1

例如,写入\mycommand{p}{b}并将结果显示为在b上方p,就像符号一样\th,但允许我写多个字母。

例如,\mycommand{text1}{\LaTeX}将单词放在\LaTex单词上方text

答案1

基于stackengine包的解决方案。我定义了一个\superimpose命令,其中包含两个强制参数和一个可选参数(对齐:rlc— 默认值):

    \documentclass[a4paper]{book}
    \usepackage[utf8]{inputenc}
    \usepackage{xcolor} 
    \usepackage{etoolbox} 
    \usepackage{stackengine}
    \newcommand\superimpose[3][]{%
    \def\stackalignment{#1}
    \stackon[0pt]{\smash{#2}}{#3}\vphantom{#2}\def\stackalignment{c}}

    \begin{document}

    \superimpose{\LaTeX}{\color{red}text}

    \superimpose[l]{\LaTeX}{\color{green}text}

    \superimpose[r]{\LaTeX}{\color{blue}text}

    \end{document} 

编译示例

答案2

如果要测量文本的宽度,可以使用长度

\newlength{\mylen}

在序言中,然后

\settowidth{\mylen}{text to measure}

当你需要它时;例如,你可以\mylen在的参数中使用它。\hspace

我不确定这是为了什么,但是你可以按照以下方法无需任何测量就能做到这一点。

\documentclass{article}

\newcommand{\overwrite}[2]{%
  {\ooalign{\hfil#1\hfil\cr\hfil#2\hfil\cr}}\vphantom{#1#2}}

\begin{document}
\overwrite{p}{b}

\overwrite{text}{\LaTeX}
\end{document}

不需要测量事物,因为 TeX 知道如何去做。

在此处输入图片描述

相关内容