有用的宏定义

有用的宏定义

这个问题与问题:宏中的换行符但是它并没有要求相同的信息,我把它分离出来:

在我的文档中,我使用如下命令:

\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

相关内容