假设我有以下代码:
%! xelatex
\documentclass{report}
\usepackage{fontspec}
\usepackage{xltxtra,xgreek}
\setmainfont{Times New Roman}
\usepackage{definitions}
%\newtheorem{prop}{Πρόταση}
\begin{document}
\begin{prop}
Μπλα μπλα μπλα
\end{prop}
\end{document}
definitions
是一个.sty
仅包含命令的文件\newtheorem{prop}{Πρόταση}
。现在,如果我按原样运行代码,输出将只是Μπλα μπλα μπλα.
但是,如果我注释该 \usepackage{definitions}
命令并取消注释\newtheorem{prop}{Πρόταση}
,则输出将与预期一致。我在这里遗漏了什么?
答案1
如果你注意错误并遵循 Babel 的建议,它就会正常工作:
\begin{filecontents}{definitions.sty}
\newtheorem{prop}{Πρόταση}
\end{filecontents}
\documentclass[greek]{report}
\usepackage{fontspec}
\usepackage{babel}
\setmainfont{Times New Roman}
\usepackage{definitions}
\begin{document}
\begin{prop}
Μπλα μπλα μπλα
\end{prop}
\end{document}
但是,你的包也应该正确声明自己。至少像这样:
\ProvidesPackage{definitions}
...
\endinput
编辑您更正后的 MWE 在我的系统上编译时没有错误,产生与上面相同的输出。虽然这些软件包可能不推荐,但它们似乎不会导致编译错误:
\begin{filecontents}{definitions.sty}
\newtheorem{prop}{Πρόταση}
\end{filecontents}
\documentclass{report}
\usepackage{fontspec}
\usepackage{xltxtra,xgreek}% Not recommended: certainly drop xltxtra; consider using babel or polyglossia
\setmainfont{Times New Roman}
\usepackage{definitions}
\begin{document}
\begin{prop}
Μπλα μπλα μπλα
\end{prop}
\end{document}