我可以使用 XeTeX 这种简单的编程语言吗?

我可以使用 XeTeX 这种简单的编程语言吗?

TeX 让我很失望。它只有最基本的功能 - 即便如此,我还得搜索如何除以两个数。

问题是:我可以用更方便的语言(如 Ruby 或 Lisp)编写宏吗?

UPD:我会解释一下我的情况。我正在为我的 RPG 模块编写规则手册,我需要构建一个设备表。问题是,我的规则不是最简单的:

http://pastebin.com/Z4Q9TQa5

我想要好看的字体,所以我用 XeLaTeX。我是俄罗斯人,所以我需要 polyglossia 或 babel。

请注意,每条建议都经过测试XeLaTeX,不是 LaTeX。

答案1

我的PythonTeX包是另一个基于 Python 的选项。PythonTeX 主要是为数学和科学应用而开发的,但它也适用于许多通用工作。我在下面列出了一些使用 PythonTeX 创建宏的基本示例。如果您使用特殊字符,则必须小心 catcode。

\documentclass{article} 
\usepackage{pythontex}

\begin{document}

Basic math:  \py{5324/251}

Macros that more closely interact with TeX:

\newcommand{\reverse}[1]{\py{"#1"[::-1]}}

\reverse{A sentence!}

\newcommand{\listtotabular}[1]{
    \begin{tabular}{|c|c|c|c|}
    \hline
    \py{'&'.join("#1".split(','))} \\
    \hline
    \end{tabular}
}

\listtotabular{First, Second, Third, Fourth}

\end{document}

在此处输入图片描述

除了上述示例以及文档中包含的示例之外,您还可以查看以下示例。

答案2

答案3

虽然我还没有尝试过,但你也许可以使用bashful通过 stdin 和 stdout 与用其他语言编写的程序交互。

只要我用以下命令进行编译,这个简单示例就不会出现任何问题-shell-escape

\documentclass{article}
\usepackage{bashful}
\def\fortune{\splice{fortune}}
\begin{document}
\fortune

\fortune
\end{document}

我不确定polyglossia文档中提到的问题。

答案4

现在你可以尝试functional包。它提供了一个 LaTeX2 接口,expl3您可以进行类似于其他现代编程语言(如)的函数式编程Lua。复合函数的求值是从内到外的。

functional下面是一个简单的例子,展示代码与代码之间的相似性lua

\documentclass{article}
\usepackage{functional}
\begin{document}

%% Functional code for comparison

\IgnoreSpacesOn
\PrgNewFunction \MathSquare { m } {
  \IntSet \lTmpaInt { \IntEval {#1 * #1} }
  \Result { \Value \lTmpaInt }
}
\IgnoreSpacesOff
\MathSquare{5}
\MathSquare{\MathSquare{5}}

\end{document}
-- Lua code for comparison --

-- define a function --
function MathSquare (arg)
  local lTmpaInt = arg * arg
  return lTmpaInt
end
-- use the function --
print(MathSquare(5))
print(MathSquare(MathSquare(5)))

请注意,使用此包,您需要通过\Result命令传递函数的返回值。

相关内容