Замена струны в латексе - PullRequest
       17

Замена струны в латексе

1 голос
/ 06 сентября 2010

Я хотел бы знать, как заменить части строки в латексе.В частности, мне дано измерение (например, 3pt, 10 мм и т. Д.), И я хотел бы удалить единицы измерения (3pt -> 3, 10 мм -> 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.Я вставляю слова «Hello World» в mybox.Я создаю новую длину / ширину, которая называется myboxw / h.Затем я получаю ширину / высоту mybox и сохраняю это в myboxw / h.Затем я настроил среду изображения, размеры которой соответствуют myboxw / h.Проблема в том, что myboxw возвращает что-то в форме "132.56pt", тогда как входные данные для графического окружения должны быть безразмерными: "\ begin {picture} {132.56, 132.56}".

Итак, мне нужна команда, которая будет отбирать единицы измерения из строки.Благодарю.

Ответы [ 3 ]

1 голос
/ 12 марта 2012

Рассмотрим пакет xstring на https://www.ctan.org/pkg/xstring.

1 голос
/ 07 сентября 2010

Используйте следующий трюк:

{
\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 голосов
/ 04 сентября 2015

Ядро 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}
...