根据输入名称的长度动态调整字体大小

根据输入名称的长度动态调整字体大小

我有一份文档,其标题页包含客户姓名。姓名的字体大小是固定的,对于较短的姓名,字体大小可以正常工作。但是,每当我遇到姓名较长的客户时,我的文本就会超出文档边距。

有没有办法根据输入自动调整名称的字体大小?文本被放置在带有一些背景的 tikz 图片中。

这是我目前得到的结果,MWE,这是我根据之前找到的答案尝试得到的。

\documentclass{article}
\usepackage{tikz}
\usepackage{graphicx}
\usepackage{calc}

\newsavebox\MyNameBox
\newsavebox\MySurnameBox
\newlength\MyNameLength

\newcommand{\nametag}[2]{
  \sbox\MyNameBox{#1}
  \sbox\MySurnameBox{#1~#2}
  \setlength\MyNameLength{40mm-1mm}
  \edef\boxtrue{0}
  \begin{tikzpicture}
       \node[anchor=south east,inner sep=0pt,outer sep=0pt,align=left] at (0mm,0mm) {
      \ifdim \MyNameLength < \wd\MySurnameBox
  %    \ifdim \MyNameLength < \wd\MySurnameBox
  \edef\boxtrue{1}
        \resizebox{\MyNameLength}{!}{#1~#2}
      \else
        #1~#2
      \fi
    };

 \end{tikzpicture}
}
%%%%%%
\begin{document}

  \nametag{FirstName}{Reallylooooooooooonglastname}\\


\end{document}

在此处输入图片描述

如果我想在一行中写名字和姓氏,但想将它们分成两行:名字和姓氏下方,字体大小相同,那么这种方法是可行的。

如果我将名字(名字和姓氏)分开,会发生什么情况?我只能调整较大的一个的大小,而另一个的字体较大,如下所示。

在此处输入图片描述

这部分的代码是这样的。

\documentclass{article}
\usepackage{tikz}
\usepackage{graphicx}
\usepackage{calc}

\newsavebox\MyNameBox
\newsavebox\MySurnameBox
\newlength\MyNameLength

\newcommand{\nametag}[2]{
  \sbox\MyNameBox{#1}
  \sbox\MySurnameBox{#2}
  \setlength\MyNameLength{40mm-1mm}
  \edef\boxtrue{0}
  \begin{tikzpicture}
       \node[anchor=south east,inner sep=0pt,outer sep=0pt,align=left] at (0mm,-5mm) {
      \ifdim \MyNameLength < \wd\MySurnameBox
  %    \ifdim \MyNameLength < \wd\MySurnameBox
  \edef\boxtrue{1}
        \resizebox{\MyNameLength}{!}{#2}
      \else
        #2
      \fi
    };
    \node[anchor=south east,inner sep=0pt,outer sep=0pt] at (0mm,0mm) {
    \ifdim \MyNameLength < \wd\MyNameBox
        \resizebox{\MyNameLength}{!}{#1}
      \else
        #1
      \fi
};
  \end{tikzpicture}
}
%%%%%%
\begin{document}

  \nametag{FirstName}{Reallylooooooooooooooooooonglastname}\\


\end{document}

任何帮助都将非常感谢。谢谢。

相关内容