LuaLaTeX的中文支持设置与简单示例

LuaLaTeX编译方式,为我们在LaTeX编辑排版中提供了执行Lua代码的功能,这样一来,对于程序员而言就有了更多的发挥空间,LaTeX也变得更有意思。我原来一直在用xeLaTeX编译方式,这段时间写UML图形绘制宏包时,总有束手束脚的感觉,于是开始转用LuaLaTeX编译方式。现在把使用过程中的一些东西记录于51CTO博客中。
  
1、中文支持设置
  我使用的是宏包ctex,以前用的xecjk不能在LuaLaTeX编译方式下使用。这个宏包的说明文档下载地址,我已经放在另一篇博客中。
  
2、listings宏包报错的解决方法
  在Ubuntu 16.04中(据说在早期版本中不会报错),LuaLaTeX编译方式下使用listings宏包会报错。错误原因我现在还不清楚,只是在网上找到一个很简单的处理办法,就是在导言区加入以下两句命令:

\newdimen\cht
\newdimen\cdp

  
3、一个简单的代码示例

\documentclass{article}
\usepackage[UTF8]{ctex}% 提供汉字支持
\usepackage{geometry}% 页面布局支持
\usepackage{xcolor}
\usepackage{luacode}
%
% 设置字体。注意顺序,第一个定义的就是默认字体
\setCJKfamilyfont{song}{FZShuSong-Z01S}% 方正书宋简体
\newcommand{\song}{\CJKfamily{song}}%
\setCJKfamilyfont{kaiti}{FZKai-Z03S}% 方正楷体简体
\newcommand{\kaiti}{\CJKfamily{kaiti}}%
\setCJKfamilyfont{heiti}{FZHei-B01S}% 方正黑体简体
\renewcommand{\heiti}{\CJKfamily{heiti}}% 因为原命令已被ctex中定义过,所以这里重定义
\setCJKfamilyfont{fangsong}{FZFangSong-Z02S}% 方正仿宋简体
\renewcommand{\fangsong}{\CJKfamily{fangsong}}% 因为原命令已被ctex中定义过,所以这里重定义
%

\begin{document}%
\luaexec{%
  math.randomseed(os.time())
  for i = 1, 8 do
    r1 = i * 30 * math.random()
    g1 = i * 30 * math.random()
    b1 = i * 30 * math.random()
    tex.sprint("\\color{rgb:red," .. r1 ..";green, " .. g1 .. ";blue," .. b1 .. "} ")
    tex.sprint("\\fontsize{" .. i * 5 .. "pt}{" .. i * 10 .. "}\\selectfont 海上升明月\\par")
  end
}%

\end{document}%

效果如下:

说明:
  1) 在宏包ctex中默认定义了一些字体调用的命令,在Ubuntu下默认是使用文鼎系列的,但我习惯使用方正字体,所以对其重新定义。注意这里的字体文件名并不是我们在其他文字编辑软件中看到的字体名称,应该是先找到字体文件,然后用字体查看器观察,如下图。有些字体不能编译成功,具体原因现在还不清楚。

  2) ctex宏包的编译速度有些慢,特别是第一次编译时要多等一下。
  3) 注意代码中的语句tex.sprint中,对于反斜杠要使用转义字符来表示,是不是有点C的味道。呵呵,Lua本身就是由C开发的。

原文地址:http://blog.51cto.com/14013986/2339100

时间: 2024-11-05 12:29:59

LuaLaTeX的中文支持设置与简单示例的相关文章

ofbiz中文支持设置

1.首先framework\common\config\general.properties修改以下设置 country.geo.id.default=US currency.uom.id.default=USD locale.properties.fallback=en 改为 country.geo.id.default=CHN currency.uom.id.default=CNY locale.properties.fallback=zh_CN 2.货币中文 通过第一步的设置,我们的ofb

css基础 选择器 id 设置样式 简单示例

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"

桌面支持--outlook默认中文语言设置

outlook默认中文语言设置

spring-servlet.xml简单示例

spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 1 <!-- springMVC简单配置 --> 2 <?xml version="1.0" encoding="UTF-8"?> 3 <beans xmlns="http://www.springframework.org/schema/beans" 4 xmlns:xsi="http://w

Unicode 7.0.1中文支持非常好

简单测试了一下,7.0.1中文支持非常好.Delphi7下将UniConnection的useUnicode设置为False,Tokyo下设置为True,Charset空着即可. 问题要点:1.建数据库时:CREATE TABLE 数据库名 (字段名 varchar(40)) DEFAULT CHARSET=utf8; 2.my.ini配置[mysqld]character-set-server=utf8 用mysql命令显示应该这这个样子: show variables like 'char%

VTK中文文本显示及简单的医学图像浏览软件

用VTK做的一个简单的医学图像浏览软件(在http://blog.csdn.net/www_doling_net/article/details/8668870这篇博文的基础上改的),支持标准的医学图像四视图(横断面.矢状面.冠状面和三维视图),并在每个二维视图上显示对应层数的图像信息. 程序运行截图如下: 可执行文件的下载地址:http://download.csdn.net/detail/www_doling_net/7501129 利用VTK实现中文文本显示的示例程序,可以支持多行文本即"

Android通过startService播放背景音乐简单示例

关于startService的基本使用概述及其生命周期可参见博客<Android中startService的使用及Service生命周期>. 本文通过播放背景音乐的简单示例,演示startService的基本使用流程. 系统界面如下: 界面上面就两个按钮,"播放音乐并退出Activity" 和 "停止播放音乐".我们在该示例中,通过操纵Activity的按钮控制MusicService播放或停止播放音乐. 我将一个名为music.mp3的放到资源目录/r

JAVA套接字(Socket)101七天系列—第四天【一个简单示例】

一个简单示例  1. 背景 我们将在本部分讨论的示例将阐明在 Java 代码中如何使用 Socket 和 ServerSocket.客户机用Socket 连接到服务器.服务器用 ServerSocket 在端口 3000 侦听.客户机请求服务器 C: 驱动器上的文件内容. 为清楚起见,我们把示例分解成客户机端和服务器端.最后我们将把它们组合起来以使您能看到整体模样. 我们在使用 JDK 1.2 的 IBM VisualAge for Java 3.5 上开发这些代码.要自己创建这个示例,您应有完

xcode江湖录-第04章 风水宝地--界面生成器之StoryBoard简单示例 与 约束

第04章风水宝地--界面生成器之StoryBoard简单示例 ??如何设置转场动画?? ??如何在参与到转场动作中?? ??如何让页面跳转到自定义VC?? ??如何设置自定义跳转模式?? ??如何用StoryBoard中的VC生成对象?? 01:新建SingleViewApplication,命名为StoryBoardTest. 02:打开Main.Storyboard,如下: 03:通过Object Library选中View Controller(A controller that mana