Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

是否考虑增加 LuaLaTeX 支持 #771

Closed
Berrysoft opened this issue Apr 30, 2022 · 14 comments
Closed

是否考虑增加 LuaLaTeX 支持 #771

Berrysoft opened this issue Apr 30, 2022 · 14 comments

Comments

@Berrysoft
Copy link

CTeX 在 LuaLaTeX 使用 luatexja 提供相关支持,不清楚 xeCJK 的相关代码能不能比较容易地 port 过去?看起来不是很多?

@Berrysoft
Copy link
Author

LuaLaTeX 的优点在于,可以很方便地使用 tikz-feynman 画费曼图

@zepinglee
Copy link
Contributor

CTeX 在 LuaLaTeX 使用 luatexja 提供相关支持,不清楚 xeCJK 的相关代码能不能比较容易地 port 过去?看起来不是很多?

主要困难在于本科生和博后报告的封面需要下划线,其中使用了 xeCJKfntef\CJKunderline,依赖 xeCJKxetex。其他的就是字体的配置了,应该不算太难。不过 luatex-ja 比 xecjk 要慢很多。粗略估计前者的时间是后者的 3~5 倍(排除刷新字体缓存)。你可以试一下 https://github.com/ustctug/ustcthesis 这个项目比较两者的速度。

@zepinglee
Copy link
Contributor

zepinglee commented May 1, 2022

另外插图最好还是编译成 pdf 再插入论文中,每次都用 Lua 编译就太费时间了。

@Berrysoft
Copy link
Author

性能不是问题,把插图另外编译这种操作实在是太麻烦了,希望能有 LuaLaTeX 这个可能性。

@zepinglee
Copy link
Contributor

那我试一下吧。

@Berrysoft 另外你是本科生还是研究生?后者的论文不需要下划线,改起来应该相对简单一些。

@Berrysoft
Copy link
Author

我已经是研究生啦,不过这个模板肯定还是要为本科生服务的吧,莫非只给研究生加 Lua 支持?

zepinglee added a commit that referenced this issue May 2, 2022
@zepinglee
Copy link
Contributor

ed67031 初步实现了 LuaTeX 的支持,不过还有几个地方不够理想。

  1. 本科生的带下划线的标题无法自动换行,只能手动换行。这是因为 xeCJKfntef patch 了 ulem\uline 才能对中文自动换行,而换成 LuaTeX 则没有了相关的 patch。后续考虑尝试 luatex-ja + lua-ul 的方式。
  2. Word 模板中有些位置的西文字符需要强制使用中文字体,如本科生封面的日期,目前找不到实现的方法。

目前效果:
Screen Shot 2022-05-02 at 09 16 24

Word 版:
Screen Shot 2022-05-02 at 09 25 00

@tanukihee
Copy link

Word 模板中有些位置的西文字符需要强制使用中文字体,如本科生封面的日期,目前找不到实现的方法。

\ltjjachar

@zepinglee
Copy link
Contributor

zepinglee commented May 2, 2022

Word 模板中有些位置的西文字符需要强制使用中文字体,如本科生封面的日期,目前找不到实现的方法。

\ltjjachar

@tanukihee 模板中有部分需要使用中文字体的是用户录入的日期,保存在 \thu@date 里,好像还不能直接使用 \ltjjachar,而且 luatex-ja 还不能修改 U+0000–U+007F 的 jacharrange

{\CJKfamily+{}\xiaosi\thu@format@date{\thu@date@zh@digit}{\thu@date}\par}%

@tanukihee
Copy link

tanukihee commented May 2, 2022

\documentclass[]{ctexart}
\usepackage{lua-visual-debug}
\begin{document}
\ltjjachar`2\kern-.5\zw\ltjjachar`0\kern-.5\zw\ltjjachar`*\kern-.5\zw\ltjjachar`*\kern-.5\zw\ltjjachar`*\kern-.5\zw\ltjjachar`*\kern-.5\zw\ltjjachar`*\kern-.5\zw\ltjjachar`*\kern-.5\zw 日

20**年**月**日
\end{document}

用到了一些肮脏的 workaround,因为 \ltjjachar 是把下个字符当成「汉字字符」看,所以会调用中文字形,但是在 JFM 里定义的汉字字宽是 1\zw(ctex 下等于 1em),这个数字又没办法改,只能用肮脏的办法了

image

@tanukihee
Copy link

Word 模板中有些位置的西文字符需要强制使用中文字体,如本科生封面的日期,目前找不到实现的方法。

\ltjjachar

@tanukihee 模板中有部分需要使用中文字体的是用户录入的日期,保存在 \thu@date 里,好像还不能直接使用 \ltjjachar

{\CJKfamily+{}\xiaosi\thu@format@date{\thu@date@zh@digit}{\thu@date}\par}%

啊这……

@tanukihee
Copy link

tanukihee commented May 2, 2022

\documentclass[]{ctexart}
\usepackage{lua-visual-debug}
\begin{document}
{\fontspec{simsun}\ltjsetparameter{autoxspacing=false} 2022年5月2日}

2022年5月2日
\end{document}

那就最 dirty 的,直接上 fontspec(逃

image

@zepinglee
Copy link
Contributor

\documentclass[]{ctexart}
\usepackage{lua-visual-debug}
\begin{document}
{\fontspec{simsun}\ltjsetparameter{autoxspacing=false} 2022年5月2日}

2022年5月2日
\end{document}

那就最 dirty 的,直接上 fontspec(逃

image

确实是个可行的办法,不过模板中配置了多种字体,直接用字体名就不太方便了。我试试能不能用 \CJK@family 之类的。

@zepinglee
Copy link
Contributor

e01e54a 基本解决了上面的问题。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants