将字符串转换为数字

将字符串转换为数字

我想创建一个特定的宏,以便更轻松地使用 Tikz 显示图形。

为此,我尝试创建一个使用许多参数的环境。例如,我希望有 xMin、xMax、yMin 和 yMax 来定义从哪里到哪里显示我的图表,一个参数来描述将图例放在何处(在轴下方或上方)等等。

因此,我想拨打这样的电话

\begin{graphe}[xMin=-5,xMax=5,yMin=5,
yMax=5,xAxisRight=below,xAxisLeft=below,yAxisTop=right,
yAxisBottom=right,xStep=1,yStep=1,gridStep=5,xScale=1,yScale=1]
\end{graphe}

我正在使用 xString 获取不同参数的值。我的问题如下:当我这样做时

\StrBetween{#1}{xMin=}{,}

例如,我确实得到了预期的“-5”,但这是一个字符串链。因此,在任何 Tikz 调用中使用它都会导致错误。

虽然我在网上做了大量研究,但我找不到任何方法将字符串“-5”解析为数字-5。

我确信我错过了一些东西,而且一定有一个我未能找到的非常简单的解决方案。

先谢谢您的帮助 !

编辑 :

\newenvironment{graphe}[1][]
{
\StrBetween{#1}{xMin=}{,}
\newcommand{\xMin}{-5}
\newcommand{\yMin}{-5}
\newcommand{\xMax}{5}
\newcommand{\yMax}{5}
\newcommand{\xAxisRight}{above}
\newcommand{\xAxisLeft}{above}
\newcommand{\yAxisTop}{right}
\newcommand{\yAxisBottom}{right}
\newcommand{\xStep}{1}
\newcommand{\yStep}{1}
\newcommand{\quadrillageStep}{5}
\newcommand{\xScale}{1}
\newcommand{\yScale}{1}
\renewcommand{\xMin}{\StrBetween{#1}{xMin=}{,}}
\begin{center}
\begin{tikzpicture}[xscale=1]
\draw[->,>=latex,very thick] (0,0) -- (\xMax,0);
}
{
\end{tikzpicture}
\end{center}
}

最后的呼唤

\draw[->,>=latex,very thick] (\xMin,0) -- (\xMax,0);

确实会产生错误,但如果我用-5而不是 来调用\xMin,它就会起作用。因此我认为这是一个转换问题。

答案1

您可以使用\pgfkeys(或者\tikzset如果您愿意,尽管它几乎是等效的)来设置默认值并处理您的设置。 以下代码修复并稍微扩展了您的 MWE:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}

% Using pgfkeys makes it easier to use key-value settings for the graph
\pgfkeys{/graphe/.is family, /graphe,
  xmin/.initial        = -3,    % defaults for xmin, xmax, ymin,ymax
  xmax/.initial        =  3,
  ymin/.initial        = -3,
  ymax/.initial        =  3,
  ylabel/.initial      = f(x),% default function name
  scale/.initial       = 0.9,  % tikzpicture scale
  xtics/.initial       = {1},  % list of marked coordinates on x-axis
  ytics/.initial       = {1},   % list of marked coordinates on y-axis
  xAxisRight/.initial  = below,
  xAxisLeft/.initial   = below,
  yAxisTop/.initial    = right,
  yAxisBottom/.initial = right,
  xStep/.initial       = 1,
  yStep/.initial       = 1,
  gridStep/.initial    = 5,
  xscale/.initial      = 1,
  yscale/.initial      = 1
}

% shortcut to access values of /graphe
\newcommand\Gval[1]{\pgfkeysvalueof{/graphe/#1}}

% graph environment with optional argument for changing defaults
\newenvironment{graphe}[1][]%
   {\begin{center}
    \pgfkeys{/graphe, #1}% process settings
    \begin{tikzpicture}[xscale=\Gval{scale}, % set tikzpicture options
                        yscale=\Gval{yscale}]
    }
    {\end{tikzpicture}
     \end{center}}

\begin{document}

  \begin{graphe}
    \draw[->,>=latex,very thick] (\Gval{xmin},0) -- (\Gval{xmax},0);
  \end{graphe}

  \begin{graphe}[xmax=6]
    \typeout{xmin = \Gval{xmin}, xmax=\Gval{xmax}.}
    \draw[->,>=latex,very thick] (\Gval{xmin},0) -- (\Gval{xmax},0);
  \end{graphe}

\end{document}

如图所示,要访问环境内的任何键值,graphe您可以使用“辅助函数” \Gval{...}。设置它的方式是,您可以为每个键设置默认值(称为值initial\pgfkeys。只有当键值与默认值不同时,才需要指定键值。为环境提供的设置graphe只会影响该实例graphe

为了完整性,这里是预期的但不太令人兴奋的输出:

在此处输入图片描述

请注意,与原始帖子一样,tikzpicture环境是居中的。

相关内容