ElegantBook
ElegantBook copied to clipboard
4.1版本下,英文版的ElegantBook与xeCJK package有兼容性问题
您好,我最近开始使用ElegantBook模板。因为当前的文档大部分是英文,少量中文,所以我选择英文版的ElegantBook,并使用了xeCJK package。可使用了xeCJK package后,所有的 加粗/斜体/强调 内容都变成了默认格式。
以下是MWE。
\documentclass{elegantbook}
\usepackage{xeCJK}
\begin{document}
This is a test file.
\textbf{This is a bfseries message}.
\textit{This is a itshape message}
\emph{This is a emphasized message. \emph{This is a double emphasized message}}.
\begin{theorem}[Testing Theorem Environment]
This is a testing message in theorem environment.
\textbf{This is a bfseries message in theorem environment.}
\textit{This is a itshape message in theorem environment.}
\emph{This is a emphasized message in theorem environment. \emph{This is a double emphasized message in theorem environment.}}
\end{theorem}
\end{document}
这篇内容的输出pdf中没有 加粗/斜体/强调,所以字体都是默认格式。
这个MWE同时输出了一个warning:
Warning: Font shape `TU/ntxtlf/m/n' underfined using `TU/lmr/m/n' instead on input line 5.
如果有您有在使用ElegantBook时更好的输入中文的办法,希望您能与我分享。
ElegantBook 的字体设置非常麻烦,建议用 cn
模式
文档的阅读者和制作者大部分不懂中文T.T。这个问题没有办法快速解决或者绕过吗?
用 cn
后,主要出现中文的地方就是章节之类的
https://github.com/ElegantLaTeX/ElegantBook/blob/a7e5c032c567676c532e9bbe9527aecd371ca7dd/elegantbook.cls#L354-L397
这里是汉化的主要代码,注释它应该就可以了。
很感谢您提供的解决思路,我的问题已经临时解决。期待下次更新时ElegankBook可以与xeCJK兼容。为了给后来人留下详细的临时解决办法,我将我的临时解决步骤留在下方。
操作系统:Ubuntu 20.04。 ElegantBook 版本:4.1 思路:创建一个ElegantBook的副本,并将其修改后使用。
步骤:
- 打开terminal并回到home。
- 在terminal内输入
kpsewhich elegantbook.cls
获取elegantbook.cls的所在地址。 - 在terminal内输入
kpsewhich -var-value TEXMFHOME
获取个人macro存放地址,一般默认为~/texmf
。 - 在terminal内输入
cp <elegantbook.cls的所在地址> <个人macro存放地址>
复制elegantbook.cls到个人macro存放地址。 - 在terminal内输入
cd <个人macro存放地址>
移动至个人macro存放地址。 - 在terminal内输入
mv elegantbook.cls elegantbook2.cls
重命名elegantbook.cls副本为elegantbook2.cls。 - 用编译器打开elegantbook2.cls。
- 将位于文件开头部分的
\ProvidesClass{elegantbook}[2021/05/02 v4.1 ElegantBook document class]
修改成\ProvidesClass{elegantbook2}[2021/05/02 v4.1 ElegantBook document class]
- 将位于文件中间部分的,处于
\ifdefstring{\ELEGANT@lang}{cn}{
和与其对应的}{\relax}
之间的内容comment掉 - 将
\ifdefstring{\ELEGANT@lang}{en}{
和与其对应的}{\relax}
之间的内容复制,并粘贴到\ifdefstring{\ELEGANT@lang}{cn}{
和与其对应的}{\relax}
之间。此时,所有的汉化部分都被comment掉了,留下的都是英文版的翻译。 - 粘贴完后,修改被粘贴内容中的
\newcommand{\proofname}{Proof}
为\renewcommand{\proofname}{Proof}
- 将文档(和子文档)内的
\documentclass{elegantbook}
修改为\documentcalss[lang=cn]{elegantbook2}
即可。
之后,便可以临时在英文环境下键入中文字符并不会造成其他错误了。 若想使用原版的ElegantBook,将class该回elegantbook即可。
很感谢您提供的解决思路,我的问题已经临时解决。期待下次更新时ElegankBook可以与xeCJK兼容。为了给后来人留下详细的临时解决办法,我将我的临时解决步骤留在下方。
很可惜,作者不打算更新了。
回复的有一些晚,你可以使用最新的 elegantbook
模板,即 v4.3 的版本,然后使用 \usepackage[scheme=plain]{ctex}
\documentclass{elegantbook}
\usepackage[scheme=plain,fontset=windows]{ctex}
\begin{document}
This is a test file.
\textbf{This is a bfseries message}.
\textit{This is a itshape message}
\emph{This is a emphasized message. \emph{This is a double emphasized message}}.
\begin{theorem}[Testing Theorem Environment]
This is a testing message in theorem environment.
\textbf{This is a bfseries message in theorem environment.}
\textit{This is a itshape message in theorem environment.}
\emph{This is a emphasized message in theorem environment. \emph{This is a double emphasized message in theorem environment.}}
\end{theorem}
\end{document}