ElegantBook icon indicating copy to clipboard operation
ElegantBook copied to clipboard

4.1版本下,英文版的ElegantBook与xeCJK package有兼容性问题

Open D029-W opened this issue 2 years ago • 6 comments

您好,我最近开始使用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时更好的输入中文的办法,希望您能与我分享。

D029-W avatar Sep 30 '21 04:09 D029-W

ElegantBook 的字体设置非常麻烦,建议用 cn 模式

sikouhjw avatar Sep 30 '21 04:09 sikouhjw

文档的阅读者和制作者大部分不懂中文T.T。这个问题没有办法快速解决或者绕过吗?

D029-W avatar Sep 30 '21 04:09 D029-W

cn 后,主要出现中文的地方就是章节之类的 https://github.com/ElegantLaTeX/ElegantBook/blob/a7e5c032c567676c532e9bbe9527aecd371ca7dd/elegantbook.cls#L354-L397 这里是汉化的主要代码,注释它应该就可以了。

sikouhjw avatar Sep 30 '21 04:09 sikouhjw

很感谢您提供的解决思路,我的问题已经临时解决。期待下次更新时ElegankBook可以与xeCJK兼容。为了给后来人留下详细的临时解决办法,我将我的临时解决步骤留在下方。

操作系统:Ubuntu 20.04。 ElegantBook 版本:4.1 思路:创建一个ElegantBook的副本,并将其修改后使用。

步骤:

  1. 打开terminal并回到home。
  2. 在terminal内输入 kpsewhich elegantbook.cls 获取elegantbook.cls的所在地址。
  3. 在terminal内输入 kpsewhich -var-value TEXMFHOME 获取个人macro存放地址,一般默认为 ~/texmf
  4. 在terminal内输入 cp <elegantbook.cls的所在地址> <个人macro存放地址> 复制elegantbook.cls到个人macro存放地址。
  5. 在terminal内输入 cd <个人macro存放地址> 移动至个人macro存放地址。
  6. 在terminal内输入 mv elegantbook.cls elegantbook2.cls 重命名elegantbook.cls副本为elegantbook2.cls。
  7. 用编译器打开elegantbook2.cls。
  8. 将位于文件开头部分的 \ProvidesClass{elegantbook}[2021/05/02 v4.1 ElegantBook document class] 修改成 \ProvidesClass{elegantbook2}[2021/05/02 v4.1 ElegantBook document class]
  9. 将位于文件中间部分的,处于 \ifdefstring{\ELEGANT@lang}{cn}{ 和与其对应的 }{\relax} 之间的内容comment掉
  10. \ifdefstring{\ELEGANT@lang}{en}{ 和与其对应的 }{\relax} 之间的内容复制,并粘贴到 \ifdefstring{\ELEGANT@lang}{cn}{ 和与其对应的 }{\relax} 之间。此时,所有的汉化部分都被comment掉了,留下的都是英文版的翻译。
  11. 粘贴完后,修改被粘贴内容中的 \newcommand{\proofname}{Proof}\renewcommand{\proofname}{Proof}
  12. 将文档(和子文档)内的 \documentclass{elegantbook} 修改为 \documentcalss[lang=cn]{elegantbook2}即可。

之后,便可以临时在英文环境下键入中文字符并不会造成其他错误了。 若想使用原版的ElegantBook,将class该回elegantbook即可。

D029-W avatar Sep 30 '21 07:09 D029-W

很感谢您提供的解决思路,我的问题已经临时解决。期待下次更新时ElegankBook可以与xeCJK兼容。为了给后来人留下详细的临时解决办法,我将我的临时解决步骤留在下方。

很可惜,作者不打算更新了。

sikouhjw avatar Sep 30 '21 07:09 sikouhjw

回复的有一些晚,你可以使用最新的 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}

image

syvshc avatar May 27 '22 19:05 syvshc