
Я пытаюсь использовать пакет sagetex, но затем при запуске кода я обнаружил такую проблему:
может кто-нибудь помочь?
Вот код:
\documentclass{article}
\usepackage{sagetex}
\begin{document}
Using Sage\TeX, one can use Sage to compute things and put them into
your \LaTeX{} document. For example, there are
$\sage{number_of_partitions(1269)}$ integer partitions of $1269$.
You don't need to compute the number yourself, or even cut and paste
it from somewhere.
Here's some Sage code:
\begin{sageblock}
f(x) = exp(x) * sin(2*x)
\end{sageblock}
The second derivative of $f$ is
\[
\frac{\mathrm{d}^{2}}{\mathrm{d}x^{2}} \sage{f(x)} =
\sage{diff(f, x, 2)(x)}.
\]
Here's a plot of $f$ from $-1$ to $1$:
\sageplot{plot(f, -1, 1)}
\sageplot[scale=.5]{plot3d(sin(pi*(x^2+y^2))/2,(x,-1,1),(y,-1,1))}
we know that 2010 factors to $\sage{factor(2010)}$
\begin{sagesilent}
m=identity_matrix(QQ,3)
m[0]=m[0]+m[1]
m[1]=m[1]-m[2]
m[2]=m[2]-2*m[1]
m[1]=m[1]+3*m[0]
m[0]=2*m[0]
\end{sagesilent}
Compute the rref of $\sage{m}$
\begin{sageblock}
g(x)=taylor(tan(x),x,0,10)
\end{sageblock}
$$\tan(x)=\sage{g(x)}$$
\end{document}
решение1
Для использования sagetex
пакета вам понадобится LaTeX, SAGE, sagetex
. После этого 3 части должны общаться друг с другом. Самое простое решение — открыть бесплатныйКокалкучетная запись, создайте документ LaTeX, скопируйте/вставьте в него ваш код выше, сохраните документ и нажмите «сборка». Вы закончите через пару минут! Очень просто, и вы можете выполнять свою работу в любой точке мира, где есть подключение к Интернету.
Если вы не хотите использовать Cocalc, то есть еще много вещей, которые могут пойти не так. Если вы используете дистрибутив LaTeX, в который sagetex
включен, то наиболее вероятный ответ — вы не загрузили SAGE. Так было со многими людьми, которых я знаю, которые считали, что раз они загрузили, то sagetex
они готовы его использовать. Проблема в том, что SAGE требует около 5 ГБ места, поэтому он не является частью вашего дистрибутива LaTeX. Вам нужно будет перейти наСагематсайт и нажмите на вкладку «Загрузить», где вы можете выбрать версию Mac/Windows/Linux. Обратите внимание, что многие дистрибутивы Linux имеют SAGE в своих репозиториях, в этом случае вам следует загрузить оттуда. После того, как у вас есть LaTeX, SAGE и sagetex
на вашем компьютере, обработка документа представляет собой 3-шаговый процесс, упомянутый на страницеоткуда взялся ваш код: сначала обработайте файл .tex, затем обработайте файл .sage, затем обработайте файл .tex. Это объясняется в ответе Самуэля Лельевра и обратите внимание, что обработка файла .sage требует командной строки, как показано в моем ответе с картинкамиздесь. Трехшаговый процесс можно автоматизировать с помощью некоторых IDE LaTeX. Например, здесьКайлобсуждается и здесь,TeXstudioдля Windows. Результат: нажатие одной кнопки выполнит 3 шага, что значительно экономит время.
Если вам все еще не удается заставить работать 3-шаговый процесс, то, вероятно, дело в том, что LaTeX и SAGE не взаимодействуют должным образом. Это обсуждается нассылка, упомянутая ранееи его может быть трудно понять.
Стоит отметить, что то, как вы сообщили sagetex
SAGE, обсуждалосьздесьможет привести к проблемам позже, когда он говорит: "Однако есть пара небольших проблем с этим: первая заключается в том, что вы в конечном итоге получите много ненужных копий sagetex.sty, разбросанных по всему компьютеру. Вторая и более серьезная проблема заключается в том, что если вы обновите Sage и получите новую версию SageTeX, код Python и код LaTeX для SageTeX могут больше не совпадать, что приведет к ошибкам". Использование Cocalc означает, что кто-то другой гарантирует, что все версии LaTeX и sagetex
работают вместе должным образом.
решение2
Бег
pdflatex myfile.tex
создает вспомогательный файл, содержащий все вычисления, которые необходимо выполнить Sage:
myfile.sagetex.sage
Запуск Sage для этого файла:
sage myfile.sagetex.sage
вычисляет результаты всех этих вычислений, так что в следующий раз, когда вы запустите
pdflatex myfile.tex
Результаты вычислений включены и отображаются в итоговом PDF-файле.
решение3
В дополнение к другим ответам здесь (об основах использования sagetex), позвольте мне добавить следующее: в файле есть ошибка. Как я сказал в ответе наhttps://stackoverflow.com/questions/57369317/почему-результат-моей-команды-мудреца-становится-вопросительным-знаком:
При попытке скомпилировать это я получаю:
**** Error in Sage code on line 23 of file.tex! Traceback follows.
Traceback (most recent call last):
File "file.sagetex.sage.py", line 39, in <module>
_st_.plot(_sage_const_1 , format='notprovided', _p_=plot3d(sin(pi*(x**_sage_const_2 +y**_sage_const_2 ))/_sage_const_2 ,(x,-_sage_const_1 ,_sage_const_1 ),(y,-_sage_const_1 ,_sage_const_1 )))
NameError: name 'y' is not defined
Проблема в этой строке:
\sageplot[scale=.5]{plot3d(sin(pi*(x^2+y^2))/2,(x,-1,1),(y,-1,1))}
и в частности, вы не определили y. (В SageMath x автоматически определяется как переменная, но не y.) Если вы добавите это перед графиком, это должно работать:
\begin{sagesilent}
var('y')
\end{sagesilent}
решение4
Следующее, конечно, является хакерской работой, но я выяснил, к какому каталогу имеет доступ моя оболочка sage, назовем его каталогом A. Я скопировал и вставил файл 'xxx.sagetex.sage' из каталога, где я запускал latex (каталог B), в каталог A. Затем из оболочки sage я выполнил команду load('intro_to_analysis.sagetex.sage'), которая создала несколько файлов в каталоге A. Я скопировал и вставил эти файлы в каталог B, снова скомпилировал latex, и графики появились в моем документе.