我正在尝试使用gfsneohellenic
。tufte-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-book
gfsneohellenic
gfsneohellenic
因为据我所知,是关于加载字体的,因此,如果系统字体文件上安装了 GFS neo hellenic,则可以通过加载此字体并使用 进行编译来绕过此定义冲突,否则fontspec
。由于您尝试加载包,GFS neohellenic 应该在您的 tex 分发字体文件中,我建议使用 lualatex 进行编译。xelatex
lualatex
\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.tex
document.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}
没有解决我的问题,但我认为它应该......好吧,我希望这在某些时候能够帮助某人。