2010-09-06 65 views
1

我想知道如何替換乳膠中的部分字符串。具體來說,我得到一個測量(如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上savebox。我將單詞「Hello World」插入mybox。我創建了一個新的長度/寬度,稱爲myboxw/h。然後獲取mybox的寬度/高度,並將其存儲在myboxw/h中。然後我建立了一個圖片環境,其大小對應於myboxw/h。麻煩的是,myboxw返回的形式爲「132.56pt」,而圖片環境的輸入必須是無量綱的:「\ begin {picture} {132.56,132.56}」。

所以,我需要一個命令,將從字符串中去除測量單位。 謝謝。

+0

考慮使用http://tex.stackexchange.com/爲LaTeX的相關問題。 – You 2010-09-06 15:26:55

回答

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} 
0

LaTeX內核 - latex.ltx - 已經提供\[email protected],您可以使用它刪除對長度的任何引用。另外,不需要爲盒子的寬度和/或高度創建長度; \wd<box>返回寬度,而\ht<box>返回高度:

\documentclass{article} 

\makeatletter 
\let\stripdim\[email protected] % User interface for \[email protected] 
\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}