我需要在一些文本上放置一个符号,我想使用\hspace{#1}
文本#1
的宽度#1
。
例如,写入\mycommand{p}{b}
并将结果显示为在b
上方p
,就像符号一样\th
,但允许我写多个字母。
例如,\mycommand{text1}{\LaTeX}
将单词放在\LaTex
单词上方text
答案1
基于stackengine
包的解决方案。我定义了一个\superimpose
命令,其中包含两个强制参数和一个可选参数(对齐:r
,l
或c
— 默认值):
\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 知道如何去做。