有人可以帮我获取情节吗,我已经尝试了很多方法,比如创建function('f')
然后传递它,Q1 = question(1, f(x+1))
但唯一有效的是:output += r"\sageplot{plot(x+1, figsize = 2)} \\\\"
我不想要:
这是我的最小代码:
\documentclass{article}
\usepackage{sagetex}
\usepackage{multicol}
\usepackage[margin=0.5in]{geometry}
\usepackage{amsmath}
\newcommand\answerbox{\fbox{\rule{1in}{0pt}\rule[-0.5ex]{0pt}{4ex}}}
\begin{document}
\begin{sagesilent}
def question(n, f):
output = r""
output += r"\bgroup"
output +=r"\noindent\textbf{Question %s} \\\\" %(n)
output +=r"\sageplot{plot(f, xmin =-2, xmax=2, ymin=-2, ymax=3, figsize = 2)} \\\\"
output += r"\textbf{Equation:}"
output += r"\answerbox \\\\"
output += r"\egroup"
return output
\end{sagesilent}
\begin{sagesilent}
Q1 = question(1, 1+x)
Q2 = question(2, 1+x^2)
\end{sagesilent}
\setlength{\columnsep}{2.0in} %Column separation.
\begin{multicols*}{2}
\sagestr{Q1}
\sagestr{Q2}
\end{multicols*}
\end{document}
答案1
一种方法是定义 LaTeX 环境“问题”。
\documentclass{article}
\usepackage[margin=0.5in]{geometry}
\usepackage{multicol}
\usepackage{amsmath}
\usepackage{url}
\usepackage{sagetex}
\title{What function is this a plot of?}
\author{TeX Stack Exchange question 535740}
\date{\url{https://tex.stackexchange.com/q/535740}}
\newenvironment{question}[8]{%
%% usage: \question{number}{function}{xmin}{xmax}{ymin}{ymax}{aspectratio}{figsize}
\bigskip\noindent
\textbf{Question #1}\par
\sageplot{plot(lambda x: #2, (#3, #4), ymin=#5, ymax=#6, aspect_ratio=#7, figsize=#8)}\par
\textbf{Equation: }\answerbox\par\medskip%
}
\newcommand\answerbox{\fbox{\rule{1.5in}{0pt}\rule[-0.5ex]{0pt}{4ex}}}
\begin{document}%
\maketitle
\setlength{\columnsep}{2.0in} %Column separation.
\begin{multicols*}{2}
\question{1}{1 + x}{-2}{2}{-1}{3}{1}{4}
\question{2}{1 + x^2}{-2}{2}{0}{5}{0.8}{4}
\end{multicols*}
\end{document}
答案2
看起来你已经按照 Cocalc 的回答这个问题。要使此操作有效,必须将变量 n 和 f 替换到字符串中。例如,您在行 中执行了此操作output +=r"\noindent\textbf{Question %s} \\\\" %(n)
。HavingQuestion n
将不起作用。出于同样的原因,您不能
plot(f
在下一行中输入。您需要plot(%s
并替换 f。我在下面修改了您的代码:
\documentclass{article}
\usepackage{sagetex}
\usepackage{multicol}
\usepackage[margin=0.5in]{geometry}
\usepackage{amsmath}
\newcommand\answerbox{\fbox{\rule{1in}{0pt}\rule[-0.5ex]{0pt}{4ex}}}
\begin{document}
\begin{sagesilent}
def question(n, f):
output = r""
output += r"\bgroup"
output +=r"\noindent\textbf{Question %s} \\\\"%(n)
output +=r"\sageplot{plot(%s, xmin =-2, xmax=2, ymin=-2, ymax=3, figsize = 2)} \\\\"%(f)
output += r"\textbf{Equation:}"
output += r"\answerbox \\\\"
output += r"\egroup"
return output
Q1 = question(1, 1+x)
Q2 = question(2, 1+x^2)
\end{sagesilent}
\setlength{\columnsep}{2.0in} %Column separation.
\begin{multicols*}{2}
\sagestr{Q1}
\sagestr{Q2}
\end{multicols*}
\end{document}