使用 tufte-book 编译 gfsneohellenic 时出现问题

使用 tufte-book 编译 gfsneohellenic 时出现问题

我正在尝试使用gfsneohellenictufte-book编译时出现以下错误。

/usr/local/texlive/2018/texmfdist/tex/latex/gfsneohellenic/gfsneohellenic.sty:
85: LaTeX Error: Command \textlozenge already defined.
           Or name \end... illegal, see p.192 of the manual.

MWE 附于下方。

\documentclass{tufte-book}
%\documentclass{book} % compiles correctly with this setting
\usepackage[T1]{fontenc}
\usepackage[default]{gfsneohellenic}

\begin{document}

\chapter{Science of why}

\end{document}

PS:使用\documentclass{book}该字体编译正确,没有任何错误。

答案1

类别过早tufte加载hyperref,这是导致多种问题的原因,包括您的问题。

\documentclass[nohyper]{tufte-book}
\usepackage[T1]{fontenc}
\usepackage[default]{gfsneohellenic}
\usepackage[unicode,hyperfootnotes=false]{hyperref}

\hypersetup{
  pdfborder = {0 0 0},
  bookmarksdepth = section,
  citecolor = DarkGreen,
  linkcolor = DarkBlue,
  urlcolor = DarkGreen,
}
\AtBeginDocument{%
  \hypersetup{
    pdfauthor={\plainauthor}
    pdftitle={\plaintitle},
  }%
}


\begin{document}

\chapter{Science of why}

\end{document}

答案2

您的错误消息指出,该命令在包和\textlozenge中均有定义。您正面临包冲突。tufte-bookgfsneohellenic

gfsneohellenic因为据我所知,是关于加载字体的,因此,如果系统字体文件上安装了 GFS neo hellenic,则可以通过加载此字体并使用 进行编译来绕过此定义冲突,否则fontspec。由于您尝试加载包,GFS neohellenic 应该在您的 tex 分发字体文件中,我建议使用 lualatex 进行编译。xelatexlualatex

\documentclass{tufte-book}
%\documentclass{book} % compiles correctly with this setting
\usepackage{fontspec}
%the fontspec way to load fonts
\setmainfont{GFS neohellenic}

\begin{document}

\chapter{Science of why}

\end{document}

也许您不知道如何使用lualatex:将您的编辑器编译器设置为 LuaLaTeX,或者使用 latexmk-luatex选项或在控制台中输入lualatex document.texdocument.tex 是您的文件名。

在此处输入图片描述

PS:您也可以使用带有 tex 字体分发的 XeLaTeX,但它需要特殊声明,请查看fontspec文档。

PS2:你的.tex 文件应该编码为 utf-8。

答案3

\documentclass{tufte-book}
\usepackage[T1]{fontenc}
\let\textlozenge\relax
\usepackage[default]{gfsneohellenic}

\begin{document}

    \chapter{Science of why}

\end{document}

答案4

我遇到了一个看似非常复杂的问题,但结果却与解决方案相同,我在此评论中的目的是分享解决方案,因为它可能会帮助其他人。就我而言,在其他情况下解决同一问题的解决方案如下

\usepackage[utf8]{inputenc}  
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\let\textlozenge\relax 

我没有彻底检查过这个问题,但我意识到问题是由 hyperref 包引起的,然而,我发现奇怪的是,只有按照上面显示的顺序执行命令才能解决问题。片段

\usepackage[utf8]{inputenc}  
\usepackage[T1]{fontenc}
\let\textlozenge\relax 
\usepackage{hyperref}

没有解决我的问题,但我认为它应该......好吧,我希望这在某些时候能够帮助某人。

相关内容