如何删除字符串的第一个字母和最后一个字母

如何删除字符串的第一个字母和最后一个字母

我的例子。

需要从字符串“$${{15}\over{4}}$$“获取字符串”${{15}\over{4}}$“。

\documentclass[14pt]{extarticle}
\usepackage{xstring}
\usepackage{amsmath}

\def\f(#1){(#1)^2-5*(#1)+6}


\begin{document} 

\section{Problem}
Evaluate $f(x)=\f(x)$ for $x=\frac 1 2$.

\section{Solution}
\immediate\write18{cas "x: 1/2\string$ tex(\f(x))\string$"}
\def\SX{\input{solution}}%This file has a string "$${{15}\over{4}}$$"

\StrGobbleLeft{\SX}{1}[\SX]%It produces an error
\StrGobbleRight{\SX}{1}[\SX]%It produces an error
$f(x)=$\SX

\end{document}

提前致谢。

答案1

使用您的代码,\SX扩展为\input{solution},而不是文件的内容。

有了catchfile它就可以工作了;你甚至可以忽略这些$迹象:

\documentclass[14pt]{extarticle}
\usepackage{catchfile}
\usepackage{amsmath}

\def\f(#1){(#1)^2-5*(#1)+6}


\begin{document}

\section{Problem}
Evaluate $f(x)=\f(x)$ for $x=\frac 1 2$.

\section{Solution}
\immediate\write18{cas "x: 1/2\string$ tex(\f(x))\string$"}

%% Read the solution file, ignoring $
\CatchFileDef\SX{solution}{\catcode`\$=9 }

$f(x)=\SX$

\end{document}

在此处输入图片描述

如果您想要更完全地控制和使用xstring,那么您必须使用模式\expandarg,而不是默认的\fullexpandarg,因为在加载\over时不再是(不可扩展的)原语。amsmath

% catch the contents of solution.tex, removing the trailing space
\CatchFileDef\SX{solution}{\endlinechar=-1 }
\expandarg
\StrGobbleLeft{\SX}{2}[\SX]
\StrGobbleRight{\SX}{2}[\SX]

我会删除所有$符号,因为就间距而言,$f(x)=$$$ 是不正确的。

相关内容