0%

CTeX 2.0 的代码主要是 李清 用 LaTeX 3 的语法书写的。之后 刘海洋 对代码做了一些调整,并构建了第一个版本的宏集手册。再之后,在测试版本发布之后,我重构了宏集手册,成为你们现在看到的这个样子。

现在,新版宏集已经上传,CTAN 地址是:http://www.ctan.org/pkg/ctex

阅读全文 »

今天有人问到下列代码报错:

1
2
3
4
5
6
7
8
\documentclass{article}
%\listfiles
\usepackage[unicode,psdextra]{hyperref}
\usepackage{unicode-math}
\setmathfont{Asana Math}
\begin{document}
\section{$\mu$}
\end{document}

提示:

1
Improper alphabetic constant

看了一下,是 hyperref 宏包的 bug。

阅读全文 »

在很多场合,我们都需要生成一系列固定长度的字符串,分发给用户,作为邀请码或者兑换码。

关于邀请码,最容易想到的特征有二:一是足够长,二是不具有规律性。这两个特征主要是为了防止用户伪造邀请码,简单来说,就是让用户「猜对」正确邀请码的可能性足够小。不过,作为邀请码来说,仅有这两个特征还不够。

邀请码并不是发放给用户就结束了,还涉及到验证的过程。用户在收到邀请码之后,将邀请码提交给系统。系统在收到提交之后,要在数据库里查询是否有匹配的记录。所以生成邀请码时除了要防止用户伪造,还要方便后期的校验。这就要求我们能够从邀请码中,经过简单的变换,提取出「主键」。

这篇文章我们讨论一下如何用 Python 生成随机的邀请码。

阅读全文 »

首先说明,这是邪道,除非你知道自己在干什么,请不要使用这篇文章提到的方法。这篇文章纯粹是一个技巧的记录,在某些时候可能会有用。

有时候我们会需要将公式字体修改为正文的 \rmfamily\upright\normalsize 的样式。虽然看起来很复杂,其实却很简单。我们只需要在导言区末尾添加以下两行代码:

1
2
\everymath\expandafter{\the\everymath\mathgroup0}
\everydisplay\expandafter{\the\everydisplay\mathgroup0}
阅读全文 »

这是系列文章的第二篇,参见系列中的相关内容。

上一篇文章 介绍了 PIL 的基本情况,以及 Image 模块的基本用法。这篇文章,我们讨论一下 ImageDrawImageFont 两个模块的基本用法,说说如何用 PIL 在现有的图片上涂涂改改。

阅读全文 »