LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 487|回复: 3

Portage中的ConTeXt的配置问题

[复制链接]
发表于 2011-12-9 17:38:02 | 显示全部楼层 |阅读模式
本来没有开启TeXLive的context和luatex标记,
忽然心血来潮,尝试了一下ConTeXt。
发现它的英文部分零配置即可使用,中文部分的配置很奇怪。
首先,ConTeXt在/usr/share/texmf/web2c下有两个配置文件
context.cnf以及texmfcnf.lua,
它们竟然都不是从/etc/texmf/而来的链接;
但是,LaTeX的配置文件texmf.cnf、fmutils.cnf等等均是链接。
其次,context.cnf文件不知道与texmf.cnf有没有关系,
好像context.cnf先于texmf.cnf被载入。
配置字体相关的环境变量OSFONTDIR各自出现在了这两个文件之中。
但是通过修改context.cnf中的OSFONTDIR的路径,
ConTeXt好像无法找到所需要的字体;
只能采用export OSFONTDIR的方式。

不知道这是不是Gentoo打包的时候遗留的问题?
目前阶段是否有与ConTeXt相配合的数学宏包?
发表于 2011-12-10 16:51:36 | 显示全部楼层
1. ConTeXt 里的中文配置是面向 MkII (pdfTeX) 的,而非 MkIV

2. 配置文件的问题,如果你确定 context.cnf 先于 texmf.cnf 被载入,那么你在 context.cnf 里设置的 OSFONTDIR 自然是无效了,因为它会被 texmf.cnf 中的 OSFONTDIR 覆盖

3. ConTeXt 自身就对数学公式支持的很好的,还要啥宏包
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-10 19:17:45 | 显示全部楼层
感谢回复。

初次使用ConTeXt,搞不清楚状况,
只是读了一下你所写的相关介绍。

配置文件中的texmfcnf.lua对MKIV也是有影响的,其中
  1. TEXMFVAR        = "home:.texlive/texmf-var",
  2. TEXMFCONFIG     = "home:.texlive/texmf-config",
复制代码
两行就决定了context运行之后的字体缓存目录。
由于Portage中TeXLive中的texmf.cnf写的是
  1. TEXMFVAR = ~/.texlive2011/texmf-var
  2. TEXMFCONFIG = ~/.texlive2011/texmf-config
复制代码
为了防止家目录下同时出现.texlive、.texlive2011,
所以改动了texmfcnf.lua。
但是,由于texmfcnf.lua不在/etc/texmf之下,
只要更新context相关的内容,
texmfcnf.lua就会被初始化,
这个很烦。

其次,尽管context.cnf与texmf.cnf都有OSFONTDIR这个变量,
但这俩个的值其实是一样的,谁覆盖谁,
道理上来说应该都能找到字体文件。
为什么context却只能通过export方式呢?

尽管网速比较慢,还是尝试装了context-minimals,
发现它的TDS与TeXLive好像不同,
但与portage中TeXLive中的context.cnf文件描述一致。
不知道像texmf-project、texmf-fonts之类的有什么用?

ConTeXt的数学宏包只能去具体使用一下才能体会了。

最后,想知道一下,就体验ConTeXt来说,
Portage中打包的ConTeXt应该也能进入实际使用了吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-1-1 15:21:37 | 显示全部楼层
总算有点弄清楚Portage中ConTeXt的配置问题。

context.cnf文件是ConTeXt Minimal中的配置文件,
相当于TeX发行版中的texmf.cnf,
感觉context.cnf的存在是为了覆盖texmf.cnf中的配置,
防止系统中ConTeXt Minimal与其他TeX发行版的目录树冲突(好像会共用$TEXMFHOME目录树);
texmfcnf.lua中的内容与context.cnf有关,
但谁决定谁还未可知!

由于Portage中TeXLive的配置文件是texmf.cnf,
texlive-context中texmfcnf.lua中目录树部分来自于texmf.cnf;
事实上,与CTAN中的TeXLive比较,
发现Portage打包的texlive-context不应该含有context.cnf;
只要texmf.cnf与texmfcnf.lua便可使LuaTeX与ConTeXt正常工作,
因此,移除context.cnf:
  1. # rm -rf  /usr/share/texmf/web2c/context.cnf
复制代码


至于让LuaTeX引擎使用中文字体,按照 http://wiki.contextgarden.net/Fonts_in_LuaTeX
需设置OSFONTDIR。尽管texmf.cnf中也有OSFONTDIR,但不知为何,
LuaTeX引擎不能直接调用texmf.cnf中的变量OSFONTDIR。
为了免去每次使用ConTeXt与LuaTeX之前按如下方式设置环境变量
  1. $ export OSFONTDIR="/usr/share/fonts//;$HOME/.fonts//"
复制代码
可参照CTAN中的TeXLive的做法,在texmfcnf.lua中增加一行
  1. # nano -w /usr/share/texmf/web2c/texmfcnf.lua
  2.      OSFONTDIR       = "/usr/share/fonts//;$HOME/.fonts//",
复制代码
之后,刷新目录树以及重新load字体
  1. $ mtxrun --generate
  2. $ mtxrun --script fonts --reload
复制代码
即可参照 http://wiki.contextgarden.net 中的方法使用Portage中的ConTeXt了。

最后,以上设置过程改动了/usr/share/texmf/web2c/下的几个文件,
导致texlive-context更新时会被重置!
不知道哪位高手能不能向texlive-context的打包者建议,
像dev-tex/texlive的配置文件一样,
将Portage中ConTeXt配置文件放置于/etc/texmf之下?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表