Встроить ячейки в Site + SAGE

Мне нравится использовать SAGE для встраивания любого кода (пример ниже). Но я хочу связать две ячейки с помощью этой инструкции, но это не работает. Как я смогу это исправить? Например, я пытаюсь вызвать из ячейки "compute" функцию Hola() в ячейке "mycell".

<script>
$(function () {
// Make the div with id 'mycell' a Sage cell
sagecell.makeSagecell({inputLocation: '#mycell',

                       evalButtonText: 'Evaluate'});
// Make *any* div with class 'compute' a Sage cell
sagecell.makeSagecell({inputLocation: 'div.compute',
                       linked: true,
                       evalButtonText: 'Evaluate'});
});
</script>
<div id="mycell">
<script type="text/x-sage">
def Hola():
    print "Hola"
</script>
</div> 
<div class="compute"><script type="text/x-sage">
Hola()
</script>
</div>

person Juan    schedule 19.04.2013    source источник


Ответы (1)


Ваша проблема в том, что у вас есть два разных типа. Если я не ошибаюсь, linked:true будет работать только внутри каждого типа div вызова makeSagecell. Я не пробовал ничего другого, но кажется разумным, что ваш пример не сработает - а linked:true определенно действительно работает со всеми в одном классе, иначе мои сегодняшние конспекты лекций не сработают!

Изменить: вот что я делаю или, по крайней мере, пример. Кажется, это работает нормально.

$(function () {
    // Make *any* div with class 'compute' a Sage cell
    sagecell.makeSagecell({inputLocation: 'div.compute',
                           evalButtonText: 'Evaluate',
                           linked:true});
});

[snip]
<div class="compute"><script type="text/x-sage">
def r2(n):
    n = prime_to_m_part(n,2)
    F = factor(n)
    ret = 4
    for a,b in F:
        if a%4==3:
            if b%2==1:
                return 0
            else:
                n = prime_to_m_part(n,a)
        else:
            ret = ret * (b+1)
    return ret

def L(n):
    ls = []
    out = 0
    for i in range(1,n+1):
        out += r2(i)
        ls.append((i,out/i))
    return ls
</script></div>

<div class="compute"><script type="text/x-sage">
@interact
def _(n=100):
    P = line(L(n))
    P += plot(pi+pi*sqrt(2)/sqrt(x),x,3,n,color='red')
    P += plot(pi-pi*sqrt(2)/sqrt(x),x,3,n,color='red')
    P += plot(pi,x,3,n,color='red',linestyle='--')
    show(P)
</script></div>

Я бы также спросил на ask.sagemath.org, если у вас по-прежнему возникают проблемы.

person kcrisman    schedule 19.04.2013
comment
Спасибо за ваш ответ, но это еще не работает. $(function () { // Сделать div с id 'mycell' ячейкой Sage sagecell.makeSagecell({inputLocation: 'div.compute', linked: true, evalButtonText: 'Evaluate'}); }); ‹/script› ‹div class=compute› ‹script type=text/x-sage› def Hola(): print Hola ‹/script› ‹/div› ‹div class=compute› ‹script type=text/x-sage › Hola() ‹/скрипт› ‹/div› - person Juan; 19.04.2013