我正在为我的学生写一套关于三角学的笔记。目前,他们还没有遇到明年才会遇到的弧度。我想为他们使用同一套笔记,但今年,给他们使用度数的笔记,明年使用弧度。目前,我正在使用(使用ifthen
)包:
\newcommand{\hsc}[1]
{
\ifnum#1=0
$0^{\circ}\leq x\leq 90^{\circ}$
\else
$0\leq x\leq\frac{\pi}{2}$
\fi
}
\newcommand{\dom}[1]
{
\ifnum#1=0
$0^{\circ}\leq x\leq 360^{\circ}$
\else
$0\leq x\leq 2\pi$
\fi
}
这在我需要更改的每一行中都运行良好,但是有没有办法可以在序言中插入一个开关,以便全局进行这些更改?
答案1
不要在命令中使用可选参数,而要使用布尔声明:
\documentclass{article}
\newif\ifdegrees
\degreestrue
\def\hsc{\ifdegrees\ensuremath{0^{\circ}\leq x\leq 90^{\circ}}
\else\ensuremath{0\leq x\leq\frac{\pi}{2}}\fi}
\def\dom{\ifdegrees\ensuremath{0^{\circ}\leq x\leq 360^{\circ}}
\else\ensuremath{0\leq x\leq 2\pi}\fi}
\begin{document}
\hsc, \dom
\degreesfalse
\hsc, \dom
\end{document}
答案2
定义一个条件和一个\ANG
带有两个参数的命令;第一个参数用于弧度,第二个参数用于角度;您还可以根据需要定义任意数量的缩写。
请注意,在“真实”文档中,您不会在\radianstrue
或之间切换\radiansfalse
。或者您可能想这样做;在这种情况下,可以设计一些技巧来允许“本地”选择。
\documentclass{article}
\newif\ifradians
%\radianstrue % uncomment if you want angles in radians
\DeclareRobustCommand{\ANG}[2]{\ifradians#1\else#2^{\circ}\fi}
\newcommand{\Aright}{\ANG{\pi/2}{90}}
\newcommand{\Aoctant}{\ANG{\pi/4}{45}}
\begin{document}
$\ANG{0}{0}\le\alpha\le\ANG{2\pi}{360}$
Half right angle is $\Aoctant$.
\radianstrue % just for showing the effect
$\ANG{0}{0}\le\alpha\le\ANG{2\pi}{360}$
Half right angle is $\Aoctant$.
\end{document}
答案3
我正在使用etoolbox
一个使用更简单语法的包
\documentclass{book}
\usepackage{etoolbox}
%\usepackage{ifthen}
\newbool{UseRadians}
\setbool{UseRadians}{false}
\newcommand{\EnableUseRadians}{%
\setbool{UseRadians}{true}}%
\newcommand{\DisableUseRadians}{%
\setbool{UseRadians}{false}}%
\EnableUseRadians % Enable Radians in preamble
\newcommand{\hsc}{
\ifboolexpr{not (bool{UseRadians})}{
$0^{\circ}\leq x\leq 90^{\circ}$
}{
$0\leq x\leq\frac{\pi}{2}$
}% End of use radians
}
\newcommand{\dom}{%
\ifboolexpr{not (bool{UseRadians})}{
$0^{\circ}\leq x\leq 360^{\circ}$
}{
$0\leq x\leq 2\pi$
} % End of use radians
}
\begin{document}
Now using Radians \par
\EnableUseRadians
\hsc
\dom
Now using degrees \par
\DisableUseRadians
\hsc
\dom
\end{document}
人们可能会反对命令内部的条件,导致每次调用命令时都要不断查询变量的状态\UseRadians
,但进步在于能够随时切换到相关模式。