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

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

Open
D029-W opened this issue Sep 30, 2021 · 6 comments
Open

Comments

@D029-W
Copy link

D029-W commented Sep 30, 2021

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

@sikouhjw
Copy link
Contributor

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

@D029-W
Copy link
Author

D029-W commented Sep 30, 2021

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

@sikouhjw
Copy link
Contributor

cn 后,主要出现中文的地方就是章节之类的

ElegantBook/elegantbook.cls

Lines 354 to 397 in a7e5c03

\ifdefstring{\ELEGANT@lang}{cn}{
\renewcommand{\baselinestretch}{1.3}
\renewcommand{\contentsname}{目录}
\renewcommand{\figurename}{图}
\renewcommand{\tablename}{表}
\renewcommand{\partname}{\color{structurecolor}}
\renewcommand{\thepart}{第\zhnumber{\arabic{part}}部分}
\renewcommand{\listfigurename}{插图目录}
\renewcommand{\listtablename}{表格目录}
\renewcommand{\bibname}{参考文献}
\renewcommand{\appendixname}{附录}
\renewcommand{\indexname}{索\hspace{2em}引}
\newcommand\figref[1]{\textbf{}~\ref{#1}}
\newcommand\tabref[1]{\textbf{}~\ref{#1}}
\ifdefstring{\ELEGANT@scheme}{chinese}{
\renewcommand{\chaptername}{第\zhnumber{\arabic{chapter}}章}}{
\renewcommand{\chaptername}{第 \thechapter{} 章}}
\newcommand{\authorname}{\citshape 作者:}
\newcommand{\institutename}{\citshape 组织:}
\newcommand{\datename}{\citshape 时间:}
\newcommand{\versionname}{\citshape 版本:}
\newcommand{\notename}{笔记}
\renewcommand*{\proofname}{证明}
\newcommand{\definitionname}{定义}
\newcommand{\theoremname}{定理}
\newcommand{\axiomname}{公理}
\newcommand{\postulatename}{公设}
\newcommand{\lemmaname}{引理}
\newcommand{\propositionname}{命题}
\newcommand{\corollaryname}{推论}
\newcommand{\examplename}{例题} %
\newcommand{\instancename}{示例} %
\newcommand{\problemname}{问题} % 问题
\newcommand{\exercisename}{练习} % 练习=习题
\newcommand{\remarkname}{注}
\newcommand{\assumptionname}{假设}
\newcommand{\conclusionname}{结论}
\newcommand{\solutionname}{解}
\newcommand{\propertyname}{性质}
\newcommand{\introductionname}{内容提要}
\newcommand\bioinfo[2]{\gdef\@bioinfo{{\citshape #1}:#2}}
\newcommand{\updatename}{更新:}
\newcommand{\historyname}{版本更新历史}
}{\relax}

这里是汉化的主要代码,注释它应该就可以了。

@D029-W
Copy link
Author

D029-W commented Sep 30, 2021

很感谢您提供的解决思路,我的问题已经临时解决。期待下次更新时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即可。

@sikouhjw
Copy link
Contributor

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

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

@syvshc
Copy link
Contributor

syvshc commented May 27, 2022

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

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