LaTeX源代码中的括号使用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LaTeX源代码中的括号使用?相关的知识,希望对你有一定的参考价值。

 (La)TeX 是一个基于宏替换的语言。见到 \\ 开头的控制序列,TeX 做的就是「能替换就替换,不能替换(替换到头了)就执行」。它没有一般意义上的「函数」的概念,不会保存现场、进行计算、恢复现场。在 LaTeX 中,一般把「必选参数」放在花括号中,「可选参数」放在方括号中。可选参数意味着该参数可以省略。带或不带这个可选参数,从 LaTeX 的角度来说,都是正确的。不过根据定义,带不带可选参数,控制序列的效果可能有不同。在宏的定义中,用 #1、#2 这样参数表示宏接受的第 1 个和第 2 个参数。如果宏带了 5 个参数,那么最多可以用到 #5;而此时 #6 等是不可用的。常规方法,一个宏最多可以带 9 个参数。这里说「一般」,意思是说也可以不一般。如果你熟悉底层的 TeX 宏定义机制,你也可以用别的东西作为参数的定界符。这里说「常规」,意思是说也可以非常规。你也可以用一些很 tricky 的技巧,定义有 10 个甚至 20 个参数的宏。可选不意味着「可以随便乱放」。比如\\newcommand<将被定义的宏>[<将被定义的宏所带的参数个数><宏的定义> 有一个可选参数,意味着这个参数可以有,也可以没有。比如下列用法都是正确的:\\newcommand\\foo\\relax\\newcommand\\bar[3]#1\\quad #2\\quad #3然而下列用法是错误的:\\newcommand[2]\\baz#1\\quad#2\\newcommand[\\qux]2#1\\quad #2 \\newcommand 是定义一个新的宏,这个宏的名字叫做 \\datedsection。方括号中的 2 代表 \\datedsection 有两个参数。后面花括号对里的内容是宏的定义,以 #1 和 #2 表示两个参数。这样,LaTeX 在遇到 \\datedsection 之后,就会根据它的定义,吃掉两个必选。注意,展开结果中,在 \\section 之前有一个空格,来自于换行。同时,这里的展开也要受 TeX 展开机制的控制,实际情况要具体分析。这里必须用花括号,因为 \\datedsection 在定义时,接收的是两个必选参数。

参考技术A

\\foo 用来执行 \\futurelet,预读 \\foo 后面的一个字符,把这个字符保存在\\next 中,然后把控制权交给 \\fooAux。\\fooAux 则判断刚才保存的预读字符是不是左方括号,如果是就说明后面是可选参数,把控制权交给 \\fooOptArg;如果不是就说明没有可选参数,把控制权交给 \\fooArg。\\fooArg 就是一个普通的宏,接受一个参数。\\fooOptArg 是一个具有命令模式的宏,它接收两个参数,前一个参数 #1 用两个字符串即左右方括号隔开,后一个参数是右方括号后面的普通参数。对于 \\fooOptArg 来说两个参数都是必需的,如果 \\fooOptArg 后面不是这个模式就会报错。

参考技术B

使用\\left 和 \\right\\left 放在左边括号前面,\\right 放在右边括号前面。需要配对使用。能自动控制不同层次括号的大小。需要注意的是在对单括号使用 \\left和 \\right命令时,也需要配对使用,没有括号的一端要加点。比如对左括号进行操作,命令如下\\left[.........\\right.使用\\big 系列标签,这是一系列标签,包括\\big,\\Big,\\bigg,\\Bigg。按着顺序,它们控制的括号不断变大。不需要成对使用,可以单独控制半个括号。括号的大小由具体使用的标签控制,不能自动调整,所以需要注意匹配。例: \\big[............\\big],稍微比较下,可以发现其中的中括号大小区别明显,这是因为\\left 和\\right能够自动控制,它认为不需要使用这么大的括号,而\\Big显示的括号大小则是相对固定的。故一般情况下使用\\left \\right 就足够了。 特殊情况下,比如公式换行才需要用到\\big。

如何在org-mode中用括号中的单词加下划线以导出到LaTeX

我想在括号中用下划线来导出到LaTeX。我在org-mode文件中使用了(_word_),但生成的LaTeX输出是( _word _),在得到的pdf文件中我得到(_word_)。谁能告诉我如何得到我想要的东西?

答案

对我来说,它看起来像OrgMode中的一个错误。为了我,

this is (_underline_) text. another _underline_ text

产生以下结果:

screenshot

我建议针对OrgMode提交bug

另一答案

这绝对是版本8中引入的org-mode的错误。

没有此bug的组织模式的最新版本(基于版本号)是8.0-alpha。

没有这个bug的org-mode的最新版本(基于提交日期)是7.9.4。

最小的工作示例如下。

#+TITLE: Test
#+OPTIONS: ^:nil

a_5

( _test_)
(_test_)

在版本7.9.4和8.0-alpha下,输出正确,如图所示。

Version 7.9.4 with correct underline

Version 8.0-alpha with correct underline

但在版本8.0-beta及更高版本中,输出不正确。

Version 8.0-beta with incorrect result

以上是关于LaTeX源代码中的括号使用?的主要内容,如果未能解决你的问题,请参考以下文章

在LaTeX中 如此插入一个大括号

括号里面一个点用latex怎么打

Latex如何让字母头顶带两点?

latex 怎么在引理中打出正的括号

如何在org-mode中用括号中的单词加下划线以导出到LaTeX

LaTeX第二课