我想创建一个特定的宏,以便更轻松地使用 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
环境是居中的。