如何使用 LuaLaTeX 在表格中产生垂直空白?

如何使用 LuaLaTeX 在表格中产生垂直空白?

如何在不使用的情况下添加几个空行\vspace?尝试使用\\总是给我带来麻烦……

现在,我正在尝试在 LaTeX 中格式化一个简单的 lua 表以供显示。我使用了\\(这需要我使用类似 的代码\noexpand\\noexpand\\)和的组合\vspace

表格格式很好除了我必须使用实际角色

tex.print("-")

工作正常,但如果我将其更改为

tex.print("\noexpand~")

或者

tex.print(" ")

事情很快就变得糟糕起来。

我也尝试过

tex.print("\noexpand\\hspace\noexpand{1mm\noexpand}")

但只有当有一些初始文本时它才有效

我的代码

for i = 0, ofs + 1*idx - 1 do
    tex.print("-")
    tex.print("\noexpand\\hspace\noexpand{0.1mm\noexpand}")                            
end

答案1

您需要决定是否使用 TeX 进行编码,还是仍然使用其他计算机语言进行思考。我从您的评论中了解到,例如“...让我发疯”、“...事情很快就变得一团糟”,您很难适应。所以我建议宁愿用“Lua”思考,将所有编码移到 Lua 部分。

这是一个仅执行并计算的示例快乐数字这也许会让你更快乐一点:)

在这种情况下,所有的排版都已转移到一个函数上\boxit,从而具有良好的关注点分离;以同样的方式思考你的表格,发布一个最少的内容,也许社区可以从那里开始。

\documentclass{tufte-book}
\usepackage[listings]{tcolorbox}
\lstloadlanguages{[LaTeX]TeX, [primitive]TeX,Pascal}
\usepackage{filecontents}
\usepackage{amsmath}
\usepackage{luacode} % loads luatexbase as well
\newcommand\emphasis[2][blue]{\lstset{emph={exec,if,then,else,do,end,while,for,print,sprint,directlua,#2},
   emphstyle={\ttfamily\textcolor{#1}}}}%
\lstset{language={[LaTeX]TeX},
      escapeinside={{(*@}{@*)}}, 
       gobble=0,
       stepnumber=1,numbersep=5pt, 
       numberstyle={\footnotesize\color{gray}},%firstnumber=last,
      breaklines=true,
      framesep=5pt,
      basicstyle=\small\ttfamily,
      showstringspaces=false,
      keywordstyle=\ttfamily\textcolor{blue},
      stringstyle=\color{orange},
      commentstyle=\color{black},
      rulecolor=\color{gray!10},
      breakatwhitespace=true,
      showspaces=false,  % shows spacing symbol
      backgroundcolor=\color{gray!15}}
\begin{document}

\emphasis{return,repeat,until,function,local}
\begin{tcblisting}{}
\begin{luacode}
-- example adapted from
-- http://rosettacode.org/wiki/Happy_numbers
function boxit(color, var, s)
  return "\\fbox{\\strut\\color{violet} "..var.."} "
end
function digits(n)
  if n > 0 then return n \% 10, digits(math.floor(n/10)) end
end
function sumsq(a, ...)
  return a and a ^ 2 + sumsq(...) or 0
end
local happy = setmetatable({true, false, false, false}, {
      __index = function(self, n)
         self[n] = self[sumsq(digits(n))]
         return self[n]
      end } )
i, j = 0, 8
repeat
   i, j = happy[j] and (tex.sprint(boxit(violet, j, " ")) or i+1) or i, j + 1
until i == 17 --or j > 999
\end{luacode}
\end{tcblisting}
\end{document}

相关内容