乳胶中的字符串替换

时间:2010-09-06 15:19:57

标签: string latex replace

我想知道如何更换乳胶中的部分字符串。具体来说,我给了一个测量(如3pt,10mm等),我想删除该测量的单位(所以3pt - > 3,10mm - > 10等)。 我想要一个命令来执行此操作的原因在于以下代码:

\newsavebox{\mybox}
\sbox{\mybox}{Hello World!}
\newlength{\myboxw}
\newlength{\myboxh}
\settowidth{\myboxw}{\usebox{\mybox}}
\settoheight{\myboxh}{\usebox{\mybox}}
\begin{picture}(\myboxw,\myboxh)
\end{picture}

基本上我创建了一个名为mybox的保存箱。我在mybox中插入“Hello World”字样。我创建了一个新的长度/宽度,称为myboxw / h。然后我获取mybox的宽度/高度,并将其存储在myboxw / h中。然后我建立了一个尺寸与myboxw / h相对应的图片环境。问题是myboxw返回的形式为“132.56pt”,而图片环境的输入必须是无量纲的:“\ begin {picture} {132.56,132.56}”。

所以,我需要一个命令来从字符串中去除测量单位。 谢谢。

3 个答案:

答案 0 :(得分:1)

使用以下技巧:

{
\catcode`p=12 \catcode`t=12
\gdef\removedim#1pt{#1}
}

然后写:

\edef\myboxwnopt{\expandafter\removedim\the\myboxw}
\edef\myboxhnopt{\expandafter\removedim\the\myboxh}
\begin{picture}(\myboxwnopt,\myboxhnopt)
\end{picture}  

答案 1 :(得分:1)

考虑https://www.ctan.org/pkg/xstring处的xstring包。

答案 2 :(得分:0)

LaTeX内核 - latex.ltx - 已经提供\strip@pt,您可以使用它去除对长度的任何引用。另外,不需要为盒子的宽度和/或高度创建长度; \wd<box>返回宽度,而\ht<box>返回高度:

\documentclass{article}

\makeatletter
\let\stripdim\strip@pt % User interface for \strip@pt
\makeatother

\begin{document}

\newsavebox{\mybox}
\savebox{\mybox}{Hello World!}

\begin{picture}(\stripdim\wd\mybox,\stripdim\ht\mybox)
  \put(0,0){Hello world}
\end{picture}

\end{document}