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