找回密码
 快速注册
搜索
查看: 1456|回复: 10

ocgx和ctexarc的中文结合问题

[复制链接]

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

abababa 发表于 2020-11-7 17:39 |阅读模式
如题。有些题目是练习题,但我想把答案直接写在后面,然后加一个按钮,能显示、隐藏答案的。这个功能我搜索了一下,发现能用ocgx来实现。

然后就是中文问题,ocgx的文档里说只支持pdflatex或lualatex来编译,我以前一直用xelatex来编译,都没有什么中文问题,现在换成pdflatex,就出了很多问题。
  1. \documentclass{article}
  2. \usepackage{ocgx}
  3. \begin{document}
  4. \begin{ocg}{OCG 1}{ocg1}{0}
  5. Chinese Text
  6. \end{ocg}
  7. \switchocg{ocg1}{Show}
  8. \end{document}
复制代码
这个代码在英文环境下编译没问题,但如果把第一行换成\documentclass{ctexart}就出问题了:
CTeX fontset `fandol' is unavailable in current mode
是字体什么的,这个搜索了一些文章,发现都是推荐换用xelatex的,但ocgx不支持这个编译。请问这个要怎么解决。

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2020-11-7 19:24
我这里没问题:
  1. \documentclass[UTF8]{ctexart}
  2. \usepackage{ocgx}
  3. \begin{document}
  4. \begin{ocg}{OCG 1}{ocg1}{0}
  5. 中文
  6. \end{ocg}
  7. \switchocg{ocg1}{显示}
  8. \end{document}
复制代码
PDFLaTeX 编译两次后效果:
ocgx.gif

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2020-11-7 20:11
回复 2# kuing
我明白怎么回事了,原来是新版的texlive里,对ubuntu系统默认使用了fandol这个字体,如果要用的话,应该改一下字体:
\documentclass[UTF8,fontset = ubuntu]{ctexart}
  1. \documentclass[UTF8,fontset = ubuntu]{ctexart}
  2. \usepackage{ocgx}
  3. \begin{document}
  4. \begin{ocg}{OCG 1}{ocg1}{0}
  5. 中文
  6. \end{ocg}
  7. \switchocg{ocg1}{显隐}
  8. \end{document}
复制代码

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2020-11-7 20:47
回复 3# abababa

发现中文文本稍多一点(几百字)的话,这个pdflatex编译的速度(就用3楼的文档,多加一些中文)非常慢,然后我又试了lualatex(也是ocgx说支持的编译方式),这个编译虽然快一点,但用了ocgx的时候却无法编译通过。

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2020-11-7 23:30
回复 4# abababa

首先得确定是不是和 ocg 有关。
几百字文本是在 ocg 里还是外?
如果完全没有 ocg,只有几百字中文,会不会慢?

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2020-11-8 08:34
回复 5# kuing

不是ocg的问题,什么包也没加,就用了
  1. \documentclass[UTF8,fontset = ubuntu]{ctexart}
  2. \begin{document}
  3. 大量中文,字符很少重复。
  4. \end{document}
复制代码
这个用pdflatex编译就很慢。ctex的文档里说,在其它系统(我用的ubuntu)上是“无法嵌入 OpenType 字体”的,不知道和这个有没有关系。然后文档里说,在ubuntu系统里,就像我那样设置第一行,就能调用文鼎字体和文泉驿字体。我用pdflatex编译时,就是不断出现下面这个:
</usr/share/fonts/truetype/arphic/uming.ttc>
在这里要等很长时间,最后才能编译出来。

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2020-11-8 14:02
回复 6# abababa

这些我就不懂啦,没用过这系统

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2020-11-8 21:27
回复 5# kuing

已经完全解决了,换了ocg的包为ocgx2,如下:
  1. \documentclass{ctexart}
  2. \usepackage{ocgx2}
  3. \begin{document}
  4. \begin{ocg}{OCG 1}{ocg1}{0}
  5.   中文
  6. \end{ocg}
  7. \toggleocgs{ocg1}{显隐}
  8. \end{document}
复制代码
查了一些网上的资料,说是ocgx和ocg-p(下午还弄过一阵这个,也没弄出来结果)已经完全被ocgx2取代了,但不知为什么,最新版的texlive中,这两个包仍然被安装了。不过texdoc这个ocgx2的文档,怎么不像其它的那样是pdf的呢。最终编译仍用xelatex来做,这个就不会有字体问题了,太好了。

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2020-11-8 21:33
回复 8# abababa

不过不太明白那个 OCG 1,就是第2个参数,到底起什么作用,也没见它显示出来,也不影响第3个参数的引用。

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2020-11-8 21:56
回复 8# abababa

过时包仍被安装自然是为了兼容旧文档,也可能是暂时的,需要更长时间或者要满足某些条件才会完全扔掉吧。
当然我并不清楚 texlive 的维护与更新流程是咋样,以上只是随口扯的……

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2020-11-9 10:40
最终做了一个这样的命令:
  1. \usepackage{ocgx2}
  2. \newcounter{ocgxnum}
  3. \setcounter{ocgxnum}{1}
  4. \newcommand{\myocg}[1]{
  5. \toggleocgs{ocg\theocgxnum}{\textcolor{red}{显隐答案}}
  6. \newline
  7. \begin{ocg}{OCG}{ocg\theocgxnum}{0}
  8. #1
  9. \end{ocg}
  10. \stepcounter{ocgxnum}
  11. }
复制代码
然后用的时候:题目叙述……
\myocg{题目解答内容}

就可以了,编译时得编译两次,可能就像ref那样第一次是标记那些label,第二次编译时引用才能起作用。对于那个大写的“OCG”,还是不明白有什么用,暂时没发现有什么问题。

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 12:09

Powered by Discuz!

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