我使用\usepackage{tkz-tab}
创建符号表。例如,为了确定下面不等式的解,我们使用表格:
由以下代码生成:
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{tkz-tab}
\begin{document}
\begin{tikzpicture}
\tkzTabInit[lgt=3,espcl=2]
{/1.2, $5x-1$ /.8, $x+3$ /.8, $\dfrac{5x-1}{x+3}$ /1.2} % first column
{$-\infty$,$-3$,$\dfrac{1}{5}$,$\infty$} % first row
\tkzTabLine { ,-,t,-,z,+, } % second row
\tkzTabLine {,-,z,+,t,+,} % third row
\tkzTabLine {,+,d,-,z,+,} % last row
\end{tikzpicture}
\end{document}
\tkzTabLine {,+,d,-,z,+,}
当函数在某个值处未定义时,我不会使用表最后一行中的选项 d,而是使用\tkzTabLine {,+,${\tiny DNE}$,-,z,+,}
DNE,其中 DNE 代表它不存在。
但是,我希望有一个新的选项,比如说u
,u
选项执行任何操作z
(包括垂直的点线),但$0$
我希望有一个带有${\tiny DNE}$
内部的框,而不是一个。然后我只需要\tkzTabLine {,+,u,-,z,+,}
在最后一行使用。
你能帮我一下吗?
更新:在这个答案它显示了如何使用 来修改$0$
选项定义中的。z
\xpatchcmd
在包的代码中tkz-tab
(看这里z
)在第432行可以找到option的定义。
我尝试u
通过复制并修改定义来插入以下新选项的定义z
。但是,它无法编译。它提到缺少括号 }。
作为参考,这里是该选项的定义z
:
\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{z}}{%
\draw[line width = \cmdTAB@tbs@lw,t style]%
(N\thetkz@cnt@impair\thetkz@cnt@lg) -- %
(N\thetkz@cnt@impair\thetkz@cnt@lgnext);
\node at (Z\thetkz@cnt@impair\thetkz@cnt@lg){$0$};
u
这是我想要实现的选项,但迄今为止还没有成功:
\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{u}}{%
\draw[line width = \cmdTAB@tbs@lw,t style]%
(N\thetkz@cnt@impair\thetkz@cnt@lg) -- %
(N\thetkz@cnt@impair\thetkz@cnt@lgnext);
\node at (Z\thetkz@cnt@impair\thetkz@cnt@lg){$DNE$};
\documentclass{article}
\usepackage{lmodern}
\usepackage{tcolorbox}
\usepackage{amsmath}% for \dfrac
\usepackage{tkz-tab}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\tkzTabLine{%
\path (N\thetkz@cnt@impair\thetkz@cnt@lg)--%
(N\thetkz@cnt@impair\thetkz@cnt@lgnext);
\node at (Z\thetkz@cnt@impair\thetkz@cnt@lg){$\x$};
}{%
\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{u}}{%
\draw[line width = \cmdTAB@tbs@lw,double style,double distance=3pt]%
(N\thetkz@cnt@impair\thetkz@cnt@lg) -- %
(N\thetkz@cnt@impair\thetkz@cnt@lgnext);
\node at (Z\thetkz@cnt@impair\thetkz@cnt@lg){
\begin{tcolorbox}
[width=0.85cm,boxsep=0pt,left=2pt,right=2pt,top=2pt,bottom=2pt]
\scriptsize DNE
\end{tcolorbox}};
}{%
\path (N\thetkz@cnt@impair\thetkz@cnt@lg)--%
(N\thetkz@cnt@impair\thetkz@cnt@lgnext);
\node at (Z\thetkz@cnt@impair\thetkz@cnt@lg){$\x$};
}%
}{}{}
\makeatother
\begin{document}
\begin{tikzpicture}
\tkzTabInit[lgt=2,espcl=1.6]
{/1, $5x-1$ /.8, $x+3$ /.8, $\dfrac{5x-1}{x+3}$ /1.2} % first column
{$-\infty$,$-3$,$\dfrac{1}{5}$,$\infty$} % first row
\tkzTabLine { ,-,t,-,z,+, } % second row
\tkzTabLine {,-,z,+,t,+,} % third row
\tkzTabLine {,+,u,-,z,+,} % last row
\end{tikzpicture}
\end{document}
答案1
您尝试修改的代码是一系列嵌套的 if-then-else 语句。要添加另一个选项,您不仅要插入另一个 if-then,还要插入另一个最后的右括号。
\ifthenelse{cond 1}{%
% then 1
}{% else 1
\ifthenelse{cond 2}{%
% then 2
}{% else 2
...
}{% else n-1
\ifthenelse{cond n}{%
% then n
}{% else n
...
}}...}}% number of closing parentheses = number of else branches = number of \ifthenelses
在\tkzTabLine
命令中,我们用另一个 if-then-else 替换最后一个 else 分支,其中旧的 else 分支成为新的 else 分支。
\usepackage{tkz-tab}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\tkzTabLine{%
\path (N\thetkz@cnt@impair\thetkz@cnt@lg)--%
(N\thetkz@cnt@impair\thetkz@cnt@lgnext);
\node at (Z\thetkz@cnt@impair\thetkz@cnt@lg){$\x$};
}{%
\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{u}}{%
\draw[line width = \cmdTAB@tbs@lw,t style]%
(N\thetkz@cnt@impair\thetkz@cnt@lg) -- %
(N\thetkz@cnt@impair\thetkz@cnt@lgnext);
\node at (Z\thetkz@cnt@impair\thetkz@cnt@lg){\footnotesize$DNE$};
}{%
\path (N\thetkz@cnt@impair\thetkz@cnt@lg)--%
(N\thetkz@cnt@impair\thetkz@cnt@lgnext);
\node at (Z\thetkz@cnt@impair\thetkz@cnt@lg){$\x$};
}%
}{}{}
\makeatother
\documentclass{article}
\usepackage{amsmath}% for \dfrac
\usepackage{tkz-tab}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\tkzTabLine{%
\path (N\thetkz@cnt@impair\thetkz@cnt@lg)--%
(N\thetkz@cnt@impair\thetkz@cnt@lgnext);
\node at (Z\thetkz@cnt@impair\thetkz@cnt@lg){$\x$};
}{%
\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{u}}{%
\draw[line width = \cmdTAB@tbs@lw,t style]%
(N\thetkz@cnt@impair\thetkz@cnt@lg) -- %
(N\thetkz@cnt@impair\thetkz@cnt@lgnext);
\node at (Z\thetkz@cnt@impair\thetkz@cnt@lg){\footnotesize$DNE$};
}{%
\path (N\thetkz@cnt@impair\thetkz@cnt@lg)--%
(N\thetkz@cnt@impair\thetkz@cnt@lgnext);
\node at (Z\thetkz@cnt@impair\thetkz@cnt@lg){$\x$};
}%
}{}{}
\makeatother
\begin{document}
\begin{tikzpicture}
\tkzTabInit[lgt=3,espcl=2]
{/1.2, $5x-1$ /.8, $x+3$ /.8, $\dfrac{5x-1}{x+3}$ /1.2} % first column
{$-\infty$,$-3$,$\dfrac{1}{5}$,$\infty$} % first row
\tkzTabLine { ,-,t,-,z,+, } % second row
\tkzTabLine {,-,z,+,t,+,} % third row
\tkzTabLine {,+,u,-,z,+,} % last row
\end{tikzpicture}
\end{document}