许多软件包都带有开关,这些开关在前言中定义。是否可以在文档正文中也点击这样的开关?
例如:我可以从
\usepackage[russian]{babel}
到
\usepackage[french]{babel}
在同一个部分或图形标题内?
编辑:babel
这只是一个例子,我很清楚这些开关实际上的作用,但这个问题更具有普遍性。顺便问一下,这些开关是否有一个通用名称,可以用来搜索包的文档?或者当两个选项可以并行使用(如)或babel
不能并行使用时,有一个术语?
答案1
babel 可能不是最好的例子,因为您可以声明两个选项并通过以下方式切换\selectlanguage
:
\usepackage[russian,french]{babel}
...
\selectlanguage{french}
...
\selectlanguage{russian}
许多软件包提供了自己的方式来改变选项,又名开关:hyperref
使用\hypersetup
、caption
使用\captionsetup
,甚至类也提供像和\KOMAoption
的KOMA-Script 类这样的后期配置\KOMAoptions
。
答案2
如果你特别想表达这个意思babel
,那么你可以同时加载两种语言的包
\usepackage[russian,french]{babel}
然后切换\selectlanguage{russian}
(在示例中,french
将是主要语言。)babel
有关更多详细信息,请参阅文档。
(其他具有加载时间选项的包也提供了改变设置的方法,但这与包有关。)
答案3
对于 Babel,您有一个命令\selectlanguage
可以做到这一点。显然,您需要这样一个命令来在文档主体内切换语言,因为同时选择所有语言是没有意义的!您可能知道,Babel 中的惯例是最后的选项列表中的语言在 时被激活\begin{document}
;因此像这样的命令\usepackage[french,russian]{babel}
将声明文档默认为俄语,并使用 的设置russian.ldf
。
一般来说,您使用的任何软件包都应提供此类开关,因为这正是您作为用户所需要的。如果软件包的功能意味着您可以在不同选项之间切换,则开发人员可能已经预见到了这种用途,并且应该在文档中提及。
但是您不能在文档中间加载包(\usepackage
禁止这样做)。这是一个技术限制,从界面设计师的角度来看有其合理性。它对用户和开发人员都是一种保证:如果有人为 LaTeX 编写了一个包,他知道它将在 之前加载\begin{document}
,因此在任何文本输出到页面之前;这意味着他将能够根据这一点做出实现选择(如果此条件不成立,则可能会失败)。如果您作为用户修改 的\usepackage
行为以便可以在序言之后调用它(这应该不太难,通过调整 LaTeX 源即可),并且您使用了这种新的可能性,那么您可能会在不知情的情况下陷入开发人员完全没有预见到的情况,因为根据 LaTeX 当前的编写方式,这是不可能的(这是一个设计选择,而不是技术问题)。因此,您(用户)依赖于软件包开发人员为您编写的用户界面;就像软件包开发人员依赖于 LaTeX 核心提供的编程接口一样。
当然,在很多情况下,加载包中间文档(带有或不带有不同的开关)可能完全无害,但这不是您可以依赖的事情;用户唯一能保证的就是包开发人员自己提供的开关。
抱歉,我现在想不出任何具体的例子。