这个问题与问题:宏中的换行符但是它并没有要求相同的信息,我把它分离出来:
在我的文档中,我使用如下命令:
\newcommand{\AND}[2]{\left(#1 \vee #2 \right)}
其优点非常明显:
- 更易读的代码
- 没有忘记括号
- 稍后重新定义的可能性,而不必搜索每个发生的情况
- 始终提供正确数量的参数
- 统一设计
到目前为止我发现的唯一缺点是,当其内容变得太大时,即在命令的嵌套出现中,整个环境就不再起作用。
所以问题是:我这样做是否被视为最佳实践?如果是,我应该如何处理上述问题?如果不是,我是否应该明确地输入所有数学代码,即不使用快捷宏?我怎样才能保留至少一些优势?
答案1
一般来说,定义与你使用的数学(或其他)结构相关的宏是一个好主意。好处如你所愿。主要的缺点是,除非你选择好的宏名,否则(甚至:-)文档如果你不理解你的定义,那么其他人(或者 10 年后的你)就无法轻易读懂 TeX 代码,也不知道它的作用。
对于特定情况,您的宏可能太简单,无法满足您的要求,您需要类似
\AND{a}{b}
和
\AND[big]{a}{b}
可选参数强制使用\bigl
\bigr
而不是,\left
\right
这可以更好地控制大小,并且在某些情况下可能允许换行。或者根据要求使用其他标记。(如果没有看到对原始命令不满意的示例,很难知道,所以我实际上不在这里提供定义。)
答案2
我会这样做
\usepackage{mathtools}
\DeclarePairedDelimiterX\AND[2]{(}{)}{#1\vee #2}
然后\AND*...
等于你的版本和\AND[\big]...
等于大卫的解决方案
答案3
宏肯定是一个不错的选择,但我选择用编辑器来帮我完成所有工作。例如,
Vim
使用 vim-latex 套件,输入((
创建\left(
(光标放在这里)\right)<++>
只需按下C-j
即可“跳转”到下一个<++>
。
Emacs
使用 Auctex(我选择的编辑器/插件),您输入C-c C-m left <RET> ( <RET
它就会产生:
\left(
光标放在这里
\right)
这些还有一个额外的好处,那就是它们将是总是可读性。有很多指南,可能还有更多编辑器可供选择。(我写了一篇博客文章比较它们http://opensourceawesomesauce.blogspot.co.uk/2012/10/latex-editors-emacs-vs-vim.html。