
Я только что установил MacTex и запускаю эту простую программу:
\documentclass[12pt]{article}
\usepackage{fontspec}
\usepackage{dejavu}
\begin{document}
\setsansfont{DejaVu Sans}
\setromanfont{DejaVu Serif}
\setmonofont{DejaVu Sans Mono}
\begin{abstract}
This is the paper's abstract \ldots
\end{abstract}
\section{Introduction}
This is time for all good men to come to the aid of their party!
\end{document}
Когда я запускаю эту команду, xelatex simple.tex
я получаю:
This is XeTeX, Version 3.14159265-2.6-0.99996 (TeX Live 2016) (preloaded format=xelatex)
restricted \write18 enabled.
entering extended mode
(./simple.tex
LaTeX2e <2016/03/31>
Babel <3.9r> and hyphenation patterns for 83 language(s) loaded.
(/usr/local/texlive/2016/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/local/texlive/2016/texmf-dist/tex/latex/base/size12.clo))
(/usr/local/texlive/2016/texmf-dist/tex/latex/fontspec/fontspec.sty
(/usr/local/texlive/2016/texmf-dist/tex/latex/l3kernel/expl3.sty
(/usr/local/texlive/2016/texmf-dist/tex/latex/l3kernel/expl3-code.tex)
(/usr/local/texlive/2016/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def))
(/usr/local/texlive/2016/texmf-dist/tex/latex/l3packages/xparse/xparse.sty)
(/usr/local/texlive/2016/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty
(/usr/local/texlive/2016/texmf-dist/tex/latex/base/fontenc.sty
(/usr/local/texlive/2016/texmf-dist/tex/latex/euenc/eu1enc.def)
(/usr/local/texlive/2016/texmf-dist/tex/latex/euenc/eu1lmr.fd))
(/usr/local/texlive/2016/texmf-dist/tex/xelatex/xunicode/xunicode.sty
(/usr/local/texlive/2016/texmf-dist/tex/latex/tipa/t3enc.def
(/usr/local/texlive/2016/texmf-dist/tex/latex/euenc/eu1lmss.fd))
(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/graphicx.sty
(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/keyval.sty)
(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/graphics.sty
(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/trig.sty)
(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics-cfg/graphics.cfg)
(/usr/local/texlive/2016/texmf-dist/tex/xelatex/xetex-def/xetex.def
(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/infwarerr.sty)
(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/ltxcmds.sty)))))
(/usr/local/texlive/2016/texmf-dist/tex/latex/fontspec/fontspec.cfg)))
(/usr/local/texlive/2016/texmf-dist/tex/latex/dejavu/dejavu.sty
(/usr/local/texlive/2016/texmf-dist/tex/latex/dejavu/DejaVuSansMono.sty)
(/usr/local/texlive/2016/texmf-dist/tex/latex/dejavu/DejaVuSans.sty)
(/usr/local/texlive/2016/texmf-dist/tex/latex/dejavu/DejaVuSerif.sty))
(./simple.aux) (/usr/local/texlive/2016/texmf-dist/tex/latex/tipa/t3cmr.fd)
LaTeX Font Warning: Font shape `EU1/DejaVuSerif-TLF/m/n' undefined
(Font) using `EU1/lmr/m/n' instead on input line 6.
kpathsea:make_tex: Invalid fontname `DejaVu Sans', contains ' '
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! fontspec error: "font-not-found"
!
! The font "DejaVu Sans" cannot be found.
!
! See the fontspec documentation for further information.
!
! For immediate help type H <return>.
!...............................................
l.8 \setsansfont{DejaVu Sans}
Я открыл утилиту TexLive, чтобы проверить, dejavu
установлен ли пакет, и это действительно так.
Что здесь происходит?
решение1
В Mac OS xetex + fontspec
шрифты OpenType не будут найдены в дереве TeXLive, если вы используете имена шрифтов:
либо используйте имена файлов,
или (самый простой и рекомендуемый некоторыми) скопируйте нужные вам шрифты в место, распознаваемое MacOS, таким образом
~/Library/Fonts
или добавьте символическую ссылку внутри
~/Library/Fonts
, это то, что я сделал раз и навсегда, я добавляю две символические ссылки с целями соответственно/Library/TeX/Root/texmf-dist/fonts/opentype
и/Library/TeX/Root/texmf-dist/fonts/truetype
. Это предполагает наличие структуры типа "texdist". Я понимаю, что теперь это реализовано через TeXLiveUtility в MacTeX, но поскольку MacTeX решил в TL2017 отказаться от MacOS, таких как Mavericks, я больше не являюсь пользователем MacTeX, поэтому я не уверен на 100%, что эти местоположения (сами по себе символические ссылки) существуют под указанными выше именами. Эта настройка требуетнетежегодное обновление. Это также не создает проблем с LuaLaTeX, поскольку последний (черезluaotfload
) (с некоторого времени, хотя и не так давно) способен очищать свою базу данных шрифтов от дубликатов, возникающих при поиске одинаковых шрифтов как напрямую в дереве TeXLive, так и косвенно через две добавленные пользователем символические ссылки выше на официальное расположение MacOS, нацеленные на репертуары дерева TeXLive.
решение2
kpathsea:make_tex: Неверное имя шрифта `DejaVu Sans', содержит ' '
Пишет, что в названии вашего шрифта есть пробел
Для Ubuntu, если dejavu действительно отсутствует, установите его с помощью:
sudo apt install fonts-dejavu*
Или установите все шрифты texlive
sudo apt install texlive-fonts-recommended
sudo apt install texlive-fonts-extra
Я также нашел здесь шрифт dejavuhttps://ctan.org/pkg/dejavu. Мне удалось скачать zip-файл, содержащий необходимые файлы, но я не установил его, потому что texlive-fonts-extra
исправил проблему отсутствия 'DejaVuSans.sty' на моем компьютере. Но если вы хотите установить его, посмотрите этот блог:https://nathanvan.wordpress.com/2012/06/14/managing-latex-packages-manually-in-ubuntu-12-04/
решение3
Следующее только что сработало у меня на macOS.
Загрузка dejavu
пакета в виде ZIP-файла со страницы пакета:https://ctan.org/tex-archive/fonts/dejavuэто был самый простой способ исправить это.
В ZIP-файле есть dejavu
папка, содержащая *.ttf
файлы. Я открыл /Applications/Font Book.app
приложение, щелкнул +
и указал на dejavu/truetype
папку.
Вот моя конфигурация Sphinx для Latex в conf.py
файле:
...
'fontpkg': r'''
\setmainfont{DejaVu Sans}
\setsansfont{DejaVu Sans}
\setmonofont{DejaVu Sans Mono}
''',
Чтобы это заработало в Linux Ubuntu 20, я использовал команду, apt install
рекомендованную Саваном Вайдьей.