序言中的 .sty 文件

序言中的 .sty 文件

假设我有以下代码:

%! 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}

相关内容