Вопрос

Я использую некоторые файлы .sty, которые не являются частью texlive, и хочу разместить их в подкаталоге папки с моим main.tex.Для загрузки пакета я использовал следующую строку:

\usepackage{sty/prettythesis}

Это работает, но компиляция main.tex с помощью xelatex и использование резина дает мне предупреждение:

sty/prettythesis.sty: You have requested package `sty/prettythesis',
but the package provides `prettythesis'. (page 1)

Есть ли способ предотвратить это предупреждение или обработать этот случай без необходимости включать «sty» во все команды \ProvidesPackage .sty-files или устанавливать переменную среды TEXINPUTS (что, похоже, невозможно из самого main.tex) ?

Это было полезно?

Решение

Я верю вот этой теме:

говорит примерно о том же:так что кажется, что единственными альтернативами являются либо использование TEXINPUTS переменная среды;или с помощью импортный пакет. (обратите внимание, есть вариант import пакет на ...Включая текстовые файлы, стр. 3.)

Еще немного о TEXINPUTS:

Надеюсь это поможет;
Ваше здоровье!

 

РЕДАКТИРОВАТЬ:Я надеялся, что можно будет установить путь TEXINPUTS непосредственно в tex-файле (используя \write18 -- и обратите внимание, что некоторые версии LaTeX используют --enable-write18, мой использует -shell-escape включить \write18;смотрите также этот) - но кажется это невозможно:

"...Это невозможно....Переменная среды дочернего процесса установлена, но это не влияет на его родительский процесс (TeX)." (Ре:Установка переменной среды TEXINPUTS внутри latex — comp.text.tex).

...итак, сейчас я просто позвоню pdflatex в моем линуксе bash так:

TEXINPUTS=.//:$TEXINPUTS pdflatex ./myfile.tex

и тогда это разрешится напрямую \usepackage{mypackage} в myfile.tex файл - даже если mypackage.sty находится в подкаталоге, скажем ./subdir/mypackage.sty.

Другие советы

Просто положите строку ниже перед вызовом PDFLATEX (или LATEX) в вашем сценарии Makefile или Build:

export TEXINPUTS=".:./sty:"

Затем ссылайся на ваш пакет как:

\usepackage{prettythesis}

Как вы обнаружены, положить пакет в подкаталог (скажем, ./sty/prettythesis.sty Что касается вашего основного .tex показывать ./), и призывая пакет через

\usepackage{sty/prettythesis}

успешно загрузит пакет, но он будет производить предупреждение

sty/prettythesis.sty: You have requested package `sty/prettythesis',
but the package provides `prettythesis'. (page 1)

Если все, что вы хотите, это избавиться от этого предупреждения, и вы в порядке с незначительными модификациями в .sty Файл, тогда вы можете просто изменить имя пакета, которое оно сообщает, изменив \ProvidesPackage команда к

\ProvidesPackage{sty/prettythesis}

Это может быть неудобно, если вы собираетесь перемещать его вокруг грузов, но нагрузка на модификации тоже не слишком плохая.

Еще лучше, если то, что у вас есть в существует определенная, модифицированная версия стандартного пакета Tex (например, скажем, Этот патч Natbib), затем изменение имени пакета четко указывает, какой пакет он предоставляет, и если вы повторно используете файл, то он будет (скорее всего) повторно поднять предупреждение, чтобы подсказать вас, чтобы убедиться, что вы знаете, что вы делаете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top