Запустите код Python внутри LibreOffice

В настоящее время я пытаюсь выйти из MATLAB и заменить его на Python. Функциональность, которую я всегда любил в MATLAB, - это (сейчас устаревшие) ноутбуки. По сути, это позволяет запускать код MATLAB внутри файла Microsoft Word и получать вывод. Это какой-то стиль iPython / Jupyter Notebook. Теперь я хотел бы спросить, есть ли похожая концепция программирования на Python в Libre Office Writer. Jupyter не подходит для меня, так как мне нужны такие вещи, как WYSIWYG-редактирование и возможность копировать и вставлять изображения из других приложений в мой Блокнот.

MATLAB Notebook

Спасибо за любые подсказки!

Питер

PS: я не ищу "Программирование макросов Libre Office".

1 ответ

Я не знаю ни одного встроенного способа, но мы можем сделать один, адаптированный из Как я могу выполнить строку, содержащую код Python в Python? Сначала настройте следующий макрос Python.

import uno
import sys
import io

def run_selected_code():
    oDoc = XSCRIPTCONTEXT.getDocument()
    xTextCursor = oDoc.CurrentController.Selection.getByIndex(0)
    xText = xTextCursor.getText()
    codeOut = io.StringIO()
    codeErr = io.StringIO()
    sys.stdout = codeOut
    sys.stderr = codeErr
    exec(xText.getString())
    sys.stdout = sys.__stdout__
    sys.stderr = sys.__stderr__
    err_string = codeErr.getvalue()
    text = oDoc.getText()
    cursor = text.createTextCursor()
    cursor.gotoEnd(False)
    #text.insertString(cursor, "\n\nerror:\n%s\n" % err_string, False)
    out_string = codeOut.getvalue()
    text.insertString(cursor, "\n\noutput:\n%s" % out_string, False)
    codeOut.close()
    codeErr.close()

g_exportedScripts = run_selected_code,

Теперь в Writer введите следующее.

a = 5
b = 7
print("%d + %d = %d" % (a, b, a + b))

Затем выберите эти три строки и запустите макрос, перейдя в Инструменты -> Макросы -> Запуск макроса.

Писатель результат

Другие вопросы по тегам