Libreoffice что это
Перейти к содержимому

Libreoffice что это

Особенности

Офисный пакет LibreOffice состоит из нескольких компонентов, интегрированных в общее ядро, в частности:

    ;
  • Табличный редактор Calc; ;
  • Векторный редактор Draw;
  • Редактор формул Math;
  • Система управления базами данных Base.

Все компоненты хорошо сочетаются и дополняют друг друга, предоставляя пользователю всё необходимое для ежедневной работы с документами, ввода, систематизации и анализа данных, маркетинга, проведения презентаций и обучения.

В чём заключаются особенности LibreOffice?

Как следует из названия, LibreOffice — один из крупнейших свободных офисных продуктов. Свобода проявляется в:

LibreOffice: страшный сон бухгалтера

LibreOffice — мощный офисный пакет, который бесплатен для частного, образовательного и коммерческого использования. Его разработчики делают замечательный продукт, который во многих сферах используется в качестве альтернативы Microsoft Office. Команде PVS-Studio всегда интересно взглянуть на код таких известных проектов и попробовать найти в них ошибки. В этот раз сделать это было легко. Проект содержит много ошибок, которые могут привести к серьёзным проблемам. В статье будут рассмотрены некоторые интересные дефекты, найденные в коде.

Введение

LibreOffice — очень крупный C++ проект. Поддерживать проект такого объёма — сложная задача для команды разработчиков. И, к сожалению, складывается впечатление, что качеству кода LibreOffice не удаётся уделять достаточного внимания.

С одной стороны, проект просто огромный, не каждый инструмент статического или динамического анализа осилит анализ 13к файлов исходного кода. Столько файлов участвует в сборке офисного пакета вместе со сторонними библиотеками. В основном репозитории LibreOffice хранится около 8к файлов исходного кода. Такой объём кода создаёт проблемы не только разработчикам:

С другой стороны, у проекта много пользователей и требуется найти и исправить как можно больше ошибок. Каждая ошибка может причинять боль сотням и тысячам пользователей. Поэтому большой размер кодовой базы не должен становиться поводом отказаться от использования тех или иных инструментов, способных обнаружить ошибки. Думаю, читатель уже догадался, что речь идёт о статических анализаторах кода :).

Да, использование статических анализаторов не гарантирует отсутствия ошибок в проекте. Однако такие инструменты, как PVS-Studio, способны найти большое количество ошибок ещё на этапе разработки и тем самым уменьшить объём работ, связанных с отладкой и поддержкой проекта.

Давайте посмотрим, что можно найти интересного в исходных кодах LibreOffice, если взять статический анализатор кода PVS-Studio. Возможности запуска анализатора обширны: Windows, Linux, macOS. Для написания этого обзора использовался отчёт PVS-Studio, созданный при анализе проекта на Windows.

Изменения с последней проверки в 2015 году

В марте 2015 года был выполнен первый анализ LibreOffice («Проверка проекта LibreOffice») с помощью PVS-Studio. С тех пор офисный пакет сильно развился как продукт, но внутри всё также содержит множество ошибок. А некоторые паттерны ошибок вообще не поменялись с тех пор. Вот, например, ошибка из первой статьи:

V656 Variables ‘aVRP’, ‘aVPN’ are initialized through the call to the same function. It’s probably an error or un-optimized code. Consider inspecting the ‘rSceneCamera.GetVRP()’ expression. Check lines: 177, 178. viewcontactofe3dscene.cxx 178

Эта ошибка исправлена, но вот что нашлось в самой последней версии кода:

V656 Variables ‘aSdvURL’, ‘aStrURL’ are initialized through the call to the same function. It’s probably an error or un-optimized code. Consider inspecting the ‘pThm->GetSdvURL()’ expression. Check lines: 658, 659. gallery1.cxx 659

Как вы могли заметить, едва различимые составные имена функций до сих пор являются источником ошибок.

Ещё один интересный пример из старого кода:

V656 Variables ‘nDragW’, ‘nDragH’ are initialized through the call to the same function. It’s probably an error or un-optimized code. Consider inspecting the ‘rMSettings.GetStartDragWidth()’ expression. Check lines: 471, 472. winproc.cxx 472

Этот фрагмент кода действительно содержал ошибку, которая сейчас исправлена. Но ошибок в коде меньше не становится… Сейчас выявлена похожая ситуация:

V656 Variables ‘defaultZoomX’, ‘defaultZoomY’ are initialized through the call to the same function. It’s probably an error or un-optimized code. Consider inspecting the ‘pViewData->GetZoomX()’ expression. Check lines: 5673, 5674. gridwin.cxx 5674

Ошибки вносятся в код буквально по аналогии.

Не дай себя обмануть

V765 A compound assignment expression ‘x -= x — . ‘ is suspicious. Consider inspecting it for a possible error. swdtflvr.cxx 3509

Вот такой вот интересный «Hack» был найден с помощью диагностики V765. Если упростить строку кода с комментарием, то можно получить неожиданный результат:

И в чём тогда заключается Hack?

Ещё один пример на эту тему:

V567 The modification of the ‘nCount’ variable is unsequenced relative to another operation on the same variable. This may lead to undefined behavior. stgio.cxx 214

Выполнение кода в таких ситуациях может зависеть от компилятора и стандарта языка. Почему бы не переписать этот фрагмент кода проще, понятнее и надёжнее?

Как не надо использовать массивы и векторы

По какой-то причине кто-то понаделал множество однотипных ошибок при работе с массивами и векторами. Давайте разберём эти примеры.

V557 Array overrun is possible. The ‘nPageNum’ index is pointing beyond array bound. pptx-epptooxml.cxx 1168

Последним валидным индексом должно являться значение, равное size() — 1. Но в этом фрагменте кода допустили ситуацию, когда индекс nPageNum может иметь значение mpSlidesFSArray.size(), из-за чего происходит выход за пределы массива и работа с элементом, состоящим из «мусора».

V557 Array overrun is possible. The ‘mnSelectedMenu’ index is pointing beyond array bound. checklistmenu.cxx 826

Интересно, что в этом фрагменте кода написали проверку индекса более понятно, но при этом допустили такую же ошибку.

V557 Array overrun is possible. The ‘nXFIndex’ index is pointing beyond array bound. xestyle.cxx 2613

А эта ошибка вдвойне интереснее! В отладочном макросе написали правильную проверку индекса, а в другом месте снова сделали ошибку, допустив выход за пределы массива.

Теперь рассмотрим ошибку иного рода, не связанную с индексами.

V554 Incorrect use of shared_ptr. The memory allocated with ‘new []’ will be cleaned using ‘delete’. dx_vcltools.cxx 158

Этот фрагмент кода содержит ошибку, приводящую к неопределённому поведению программы. Дело в том, что память выделяется и освобождается разными способами. Для правильного освобождения памяти необходимо было объявить поле класса таким образом:

Как дважды ошибиться в макросах

V568 It’s odd that the argument of sizeof() operator is the ‘bTextFrame? aProps: aShapeProps’ expression. wpscontext.cxx 134

К сожалению для многих разработчиков, аргументы макросов ведут себя не как аргументы функций. Игнорирование этого факта часто приводит к ошибкам. В случаях #1 и #2 используется почти одинаковая конструкция с использованием тернарного оператора. Но в первом случае — макрос, во втором — функция. Однако это только вершина проблемы.

В случае #1 анализатор на самом деле обнаружил следующий код с ошибкой:

Это наш цикл с макросом SAL_N_ELEMENTS. Оператор sizeof не вычисляет выражение в тернарном операторе. В данном случае выполняется арифметика с размером указателей, результатом которой являются значения, далёкие от реального размера указанных массивов. На вычисление неправильных значений дополнительно влияет и разрядность приложения.

Но потом оказалось, что существует 2 макроса SAL_N_ELEMENTS! Т.е. препроцессор раскрыл не тот макрос, как же это могло произойти? Нам поможет определение макроса и комментарии разработчиков:

Другая версия макроса содержит безопасную шаблонную функцию, но что-то пошло не так:

  1. Безопасный макрос не включился в код;
  2. Другим макросом всё равно невозможно пользоваться, т.к. успешное инстанцирование шаблонной функции выполняется только если в тернарный оператор передать массивы одинакового размера. А в этом случае использование такого макроса теряет смысл.

Опечаточки и copy-paste

V1013 Suspicious subexpression f1.Pitch == f2.CharSet in a sequence of similar comparisons. xmldlg_export.cxx 1251

Ошибка является достойным кандидатом для пополнения статьи «Зло живёт в функциях сравнения», если мы когда-нибудь решим её обновить или расширить. Думаю, вероятность найти такую ошибку (пропуск f2.Pitch) самостоятельно крайне мала. А вы как считаете?

V501 There are identical sub-expressions ‘mpTable[ocArrayColSep] != mpTable[eOp]’ to the left and to the right of the ‘&&’ operator. formulacompiler.cxx 632

Результатом бездумного копирования стал такой фрагмент кода. Возможно, условное выражение просто продублировано лишний раз, но всё равно в коде не место таким неоднозначностям.

V517 The use of ‘if (A) <. >else if (A) <. >‘ pattern was detected. There is a probability of logical error presence. Check lines: 781, 783. mysqlc_databasemetadata.cxx 781

В результате копирования условных выражений, в коде была допущена ошибка, из-за которой значение 8 для переменной nColumnSize никогда не выставляется.

V523 The ‘then’ statement is equivalent to the ‘else’ statement. svdpdf.hxx 146

Тут перепутали функции min() и max(). Наверняка из-за этой опечатки в интерфейсе что-то странно масштабируется.

Странные циклы

V533 It is likely that a wrong variable is being incremented inside the ‘for’ operator. Consider reviewing ‘i’. javatypemaker.cxx 602

Выражение ++i в цикле выглядит очень подозрительно. Возможно, там должно быть ++j.

V756 The ‘nIndex2’ counter is not used inside a nested loop. Consider inspecting usage of ‘nIndex’ counter. treex.cxx 34

Есть какая-то ошибка во внутреннем цикле for. Т.к. переменная nIndex не изменяется, происходит перезаписывание одних и тех же двух элементов массива на каждой итерации. Скорее всего, везде вместо nIndex должна была использоваться переменная nIndex2.

V1008 Consider inspecting the ‘for’ operator. No more than one iteration of the loop will be performed. diagramhelper.cxx 292

Цикл for намеренно ограничивается до 1 итерации. Непонятно, зачем это сделано именно таким способом.

V612 An unconditional ‘return’ within a loop. pormulti.cxx 891

Пример более простого странного цикла из одной итерации, который лучше переписать на условный оператор.

Ещё несколько таких мест:

  • V612 An unconditional ‘return’ within a loop. txtfrm.cxx 144
  • V612 An unconditional ‘return’ within a loop. txtfrm.cxx 202
  • V612 An unconditional ‘return’ within a loop. txtfrm.cxx 279

Странные условия

V637 Two opposite conditions were encountered. The second condition is always false. Check lines: 281, 285. authfld.cxx 281

Анализатор обнаружил противоречивые сравнения. Что-то с этим фрагментом кода явно не так.

Такой же код замечен и в этом месте:

  • V637 Two opposite conditions were encountered. The second condition is always false. Check lines: 1827, 1829. doctxm.cxx 1827

Проблема приведённого фрагмента кода заключается в том, что первое условное выражение не влияет на результат всего выражения.

По мотивам подобных ошибок я даже написал теоретическую статью: «Логические выражения в C/C++. Как ошибаются профессионалы».

V590 Consider inspecting this expression. The expression is excessive or contains a misprint. unoobj.cxx 1895

Сразу не понять, в чём проблема данного условия, поэтому из препроцессированного файла был выписан развёрнутый фрагмент кода:

Получилось так, что ни одно число не входит одновременно в 4 диапазона, заданных в условии числами. Разработчики допустили ошибку.

V590 Consider inspecting the ‘* pData <= MAXLEVEL && * pData <= 9’ expression. The expression is excessive or contains a misprint. ww8par2.cxx 756

Из-за того, что в первом условии используется константа со значением 10, условие получилось избыточным. Этот фрагмент кода можно переписать следующим образом:

Но, возможно, в представленном коде была другая проблема.

V757 It is possible that an incorrect variable is compared with nullptr after type conversion using ‘dynamic_cast’. Check lines: 2709, 2710. menu.cxx 2709

Скорее всего, условие содержит ошибку. Необходимо было проверить указатели p и pPopup.

V668 There is no sense in testing the ‘m_pStream’ pointer against null, as the memory was allocated using the ‘new’ operator. The exception will be generated in the case of memory allocation error. zipfile.cxx 408

Анализатор обнаружил ситуацию, когда значение указателя, возвращаемого оператором new, сравнивается с нулём. Согласно стандарту языка C++, в случае невозможности выделения памяти, оператор new сгенерирует исключение std::bad_alloc. В проекте LibreOffice нашлось всего 45 подобных мест, что очень мало для такого объёма кода. Но всё равно это может приводить к проблемам у пользователей. Разработчикам следует убрать лишние проверки или создавать объекты таким образом:

V728 An excessive check can be simplified. The ‘(A && !B) || (!A && B)’ expression is equivalent to the ‘bool(A) != bool(B)’ expression. toolbox2.cxx 1042

Очень давно диагностика V728 была расширена до случаев, которые, скорое всего, не являются ошибочными, но усложняют код. А в сложном коде рано или поздно всё равно допускается ошибки.

Данное условие упрощается до такого:

В проекте встречается около 60 подобных конструкций, некоторые из них очень и очень громоздкие. Авторам проекта лучше ознакомиться с полным отчётом анализатора PVS-Studio.

Проблемы с безопасностью

V523 The ‘then’ statement is equivalent to the ‘else’ statement. docxattributeoutput.cxx 1571

Здесь скопирован очень крупный фрагмент кода. Для функции, которая изменяет некие права, выявленная проблема выглядит очень подозрительно.

V1001 The ‘DL’ variable is assigned but is not used by the end of the function. cipher.cxx 811

Переменные DL и DR обнуляются простым присваиванием в конце функции и больше не используются. Для компилятора это повод удалить команды для оптимизации.

Для правильной очистки переменных в Windows приложениях можно переписать код таким образом:

Но для LibreOffice здесь потребуется кросс-платформенное решение.

  • V1001 The ‘DL’ variable is assigned but is not used by the end of the function. cipher.cxx 860

Обратите внимание, что в функции queryStream в списке параметров сначала идёт rPassword, а затем – rUri. В коде нашлось место, где соответствующие аргументы перепутаны местами при вызове этой функции.

V794 The assignment operator should be protected from the case of ‘this == &rToBeCopied’. hommatrixtemplate.hxx 121

Приведённый случай больше относится к безопасному написанию кода. В операторе копирования нет проверки на присвоение объекта самому себе. Всего в проекте около 30 таких реализаций оператора копирования.

Ошибки с SysAllocString

V649 There are two ‘if’ statements with identical conditional expressions. The first ‘if’ statement contains function return. This means that the second ‘if’ statement is senseless. Check lines: 125, 137. acctable.cxx 137

Функция SysAllocString() возвращает указатель, который может иметь значение NULL. Что-то странное написал автор этого кода. Указатель на аллоцированную память не проверяется, что может привести к проблемам в работе программы.

Похожие предупреждения из других функций:

  • V649 There are two ‘if’ statements with identical conditional expressions. The first ‘if’ statement contains function return. This means that the second ‘if’ statement is senseless. Check lines: 344, 356. acctable.cxx 356
  • V649 There are two ‘if’ statements with identical conditional expressions. The first ‘if’ statement contains function return. This means that the second ‘if’ statement is senseless. Check lines: 213, 219. trvlfrm.cxx 219

Результат одного из вызовов функции SysAllocString() не используется. Разработчикам следует обратить внимание на этот фрагмент кода.

Разное

V716 Suspicious type conversion in return statement: returned HRESULT, but function actually returns BOOL. maccessible.cxx 2649

Одна из ветвей исполнения функции возвращает значение, тип которого не соответствует типу возвращаемого значения функции. Тип HRESULT имеет более сложный формат, чем тип BOOL, и предназначен для хранения статусов операций. Например, значение E_INVALIDARG равно 0x80070057L. Правильно будет написать, например, так:

Более подробно об этом можно прочесть в документации к диагностике V716.

Ещё несколько подобных мест:

  • V716 Suspicious type conversion in return statement: returned HRESULT, but function actually returns BOOL. inprocembobj.cxx 1299
  • V716 Suspicious type conversion in return statement: returned HRESULT, but function actually returns BOOL. maccessible.cxx 2660

Согласно стандарту языка, порядок инициализации членов класса в конструкторе происходит в порядке их объявления в классе. В нашем случае поле m_aMutex будет инициализировано уже после того, как поучаствует в инициализации пяти других полей класса.

Вот как выглядит конструктор одного из полей класса:

Объект мьютекса передаётся по ссылке. В этом случае могут возникать разные проблемы: от обращения к неинициализированной памяти, до последующей потери изменений объекта.

V763 Parameter ‘nNativeNumberMode’ is always rewritten in function body before being used. calendar_jewish.cxx 286

Аргументы функции перезаписывают по разным причинам: борьба с предупреждениями компилятора, обратная совместимость, «костыль» и т.п. Тем не менее, любое из этих решений не является хорошим, а код выглядит запутанным.

Следует сделать обзор кода этого места и ещё несколько похожих:

  • V763 Parameter ‘bExtendedInfo’ is always rewritten in function body before being used. graphicfilter2.cxx 442
  • V763 Parameter ‘nVerbID’ is always rewritten in function body before being used. oleembed.cxx 841
  • V763 Parameter ‘pCursor’ is always rewritten in function body before being used. edlingu.cxx 843
  • V763 Parameter ‘pOutput’ is always rewritten in function body before being used. vnew.cxx 181
  • V763 Parameter ‘pOutput’ is always rewritten in function body before being used. vnew.cxx 256

Заключение

Желание проверить код LibreOffice у меня появилось после личного использования продукта. По непонятной причине, при некоторых случайных запусках абсолютно из всех пунктов меню исчезает текст. Остаются только иконки и монотонные полоски. Ошибка, скорее всего, высокоуровневая и, возможно, её нельзя найти с помощью инструментов статического анализа. Тем не менее, анализатор нашёл очень много проблем, не связанных с этим, и я буду рад, если разработчики LibreOffice обратят внимание на статические анализаторы кода и попробуют использовать их для повышения качества и надёжности проекта. Это будет полезно всем.

Спасибо за внимание. Подписывайтесь на наши каналы и следите за новостями из мира программирования!

  • Vk: @pvsstudio_rus
  • Telegram: @pvsstudio_rus
  • Instagram: @pvsstudio_rus
  • Twitter: @pvsstudio_rus
  • YouTube: @PVSStudioTool

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Svyatoslav Razmyslov. LibreOffice: Accountant’s Nightmare

Как пользоваться LibreOffice

Как пользоваться LibreOffice

В операционной системе Linux вы не сможете установить пакет Microsoft Office, то есть использовать программы Word или Excel не получится. Но есть отличная альтернатива – бесплатная программа LibreOffice, включающая множество похожих продуктов. С ее помощью можно создавать таблицы, текстовые файлы, презентации, рисунки и так далее.

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

Как установить LibreOffice

LibreOffice практически не отличается от аналогичного продукта корпорации Microsoft. Точнее так – все, что в Office поставляется по отдельности, тут объединено в один сервис. Libre поддерживает и использует собственные форматы, шрифты, стили и так далее. Программа полностью совместима со всеми форматами, что используются в Microsoft Office.

LibreOffice входит в стандартные репозитории основных дистрибутивов Linux. Кроме того, пакет доступен для Windows и macOS.

Скачать программу для всех ОС можно на официальном сайте разработчика. Переходите на сайт, выбираете версию системы и язык. Загружаете инсталлятор, затем запускаете его, проходите все шаги и ждете, пока распаковка не закончится. После окончания сего процесса можете сразу же приступать к работе.Как скачать LibreOffice для ОС Windows или masOS

Один нюанс – установка в Windows может быть с автоматической или ручной настройкой. Во втором случае вы, конечно же, сможете убрать ненужные компоненты, а также дадите разрешение или запрет на ассоциацию с некоторыми файлами Microsoft Office. Ясное дело, при автоматической установке все ассоциации будут применены по умолчанию.

Если вы используете Линукс, то установить программу можно простой командой – открываете Терминал, потом вводите вот такой запрос:

Подтверждаете запрос вводом пароля и дожидаетесь окончания скачивания. После этого программа готова к использованию!

Интерфейс LibreOffice

Что сразу хочется отметить у LibreOffice – то, что для создания документов разных форматов не приходится открывать разные приложения. После открытия просто выбираете нужный тип файла. Далее я буду описывать интерфейс программы в ОС Windows при создании текстовых файлов и таблиц.

Стартовое окно программы LibreOffice

Если говорить о текстовом редакторе, то внешне он мало чем отличается от того же Word. По стилю напоминает версию 2007 года. Здесь примерно похожее расположение инструментов, линейки, меню. Лишь часто используемые инструменты и функции у Libre перемещены в правую панель. Еще и шрифты по умолчанию стоят совсем другие, но изменить это легко.

Каковы отличия текстовых редакторов LibreOffice и Microsoft Office

При сохранении по умолчанию будет предлагаться формат Libre (ODF). Чтобы изменить его, необходимо выбрать нужный вам формат из выпадающего меню. Кстати, по устройству интерфейса версии на ОС Windows и Linux практически не отличаются, что отлично видно на скриншоте ниже (с дистрибутива Fedora).

Как выглядит интерфейс текстового редактора ЛибреОффис в дистрибутиве Fedora

Одна отличительная штука в LibreOffice мне сильно понравилась, и ее, можно сказать, нет в таком виде в Word – речь идет о навигаторе. В Либре он показывает, какие заголовки, таблицы, изображения, ссылки, гиперссылки, а также прочие составляющие есть в одном файле. Если мне надо быстро перейти к определенному изображению или комментарию, я смогу это сделать через навигатор. Ворд тоже имеет свой навигатор, но он сильно упрощен и показывает только заголовки, страницы, результаты поиска.

Как пользоваться навигатором в текстовом редакторе

Кстати, если вы хотите закрыть документ, не выходя из приложения LibreOffice, нужно нажать не на привычный крестик, а на тот, что поменьше. У Linux он имеет похожее расположение, только иногда выделяется другим цветом, поэтому вы точно не запутаетесь.

Как закрыть рабочий файл в LibreOffice, не выходя из приложения

Дальше посмотрим, как выглядит интерфейс при работе с таблицами. Думаю, сходств с Excel в данном случае еще больше. Возможностей для работы с формулами, форматирования, редактирования ничуть не меньше.

Отличия табличных редакторов Microsoft Excel и LibreOffice

От себя скажу: программы Microsoft Office мне нравится тем, что рабочую панель можно откреплять и скрывать, тем самым освобождая пространство (я обычно работаю на половину экрана, мне так удобнее). В Libre же скрыть панель инструментов нельзя, только полностью убрать ее через меню «Вид». Это не очень удобно и несколько огорчает, ведь программа-то достойная.

Пока я копалась в настройках, назрел хороший вопрос – можно ли в программе одновременно создавать файлы нескольких типов? Еще как! Для этого нужно открыть меню «Файл», перейти к подпункту «Создать» и уже там выбрать подходящий формат.

Можно ли в LibreOffice одновременно работать с файлами разных форматов

Форматирование в LibreOffice

Как я уже говорила, в LibreOffice предусмотрены собственные стили форматирования документов и шрифты. Но базовые функции вроде выделения текста, изменения его цвета и выравнивания все же выделены в главном меню. Регулировать отступы и интервалы можно как с помощью линейки, так и через настройки.

Инструмент для работы со стилями тоже имеется, и выбрать подходящий можно несколькими способами – через выпадающее окно в меню или панель управления в правой части. Вы сможете использовать как любой из встроенных стилей, так и создать собственный.

Как применить различные стили в текстовом редакторе LibreOffice

Шаблоны для разных случаев жизни тоже предусмотрены. Для их просмотра потребуется перейти в менеджер – открыть раздел «Файл», затем перейти во вкладку «Шаблоны», выбрать «Управление шаблонами». Доступно несколько вариантов для текстовых файлов и презентаций. При желании вы сможете создать собственный шаблон и сохранить его в приложении.

Шаблоны, доступные для использования в LibreOffice

Заголовки, оглавление, библиография

С разметкой заголовков тут проблем нет. Все как в Word – нужно выделить определенное предложение и применить к нему конкретный стиль. Но это вершина айсберга, ведь суть всего процесса сводится к составлению оглавления… Сразу скажу, работать в LibreOffice с оглавлением и библиографией в разы проще.

Итак, чтобы вставить в документ оглавление, необходимо перейти в раздел меню «Вставка», затем в подраздел «Оглавление и указатели», а там уже выбрать «Оглавление, указатель или библиография». В результате откроется окно, в котором вы сможете выбрать, что будете вставлять, дать заголовок, а также провести более подробную настройку, пройдясь по вкладкам. После этого остается только нажать на кнопку ОК, и оглавление будет вставлено.

Вставка оглавление и настройка параметров в текстовом редакторе

Если же вы хотите вставить библиографию, прежде придется немного попотеть. Для начала стоит разработать список источников, в Libre для этого существует специальный инструмент. Чтобы перейти в него, открываете меню «Сервис» и переходите в «Базы данных библиографии». После этого откроется новое окно, где вы сможете внести полную информацию об источнике информации.

Добавление новых источников в базу данных библиографии в LibreOffice

Когда все данные будут внесены, вы сможете вставить список литературы или какой-то его элемент. Правда, последний будет в виде сокращенного идентификатора, который вы ввели ранее в базу данных.

Вставка изображений, диаграмм и таблиц

Вставлять изображения в документы, создаваемые в LibreOffice, можно несколькими способами – из буфера обмена, перемещением из папки сразу в файл, а также через меню. В последнем случае нужно будет открыть меню «Вставка», затем кликнуть по пункту «Изображение» и выбрать его в файловом менеджере.

Способы вставки изображений в текстовом редакторе

После того как изображение будет вставлено, под панелью управления появится новое меню с инструментами для изменения параметров изображения. Так, можно установить обтекание текста, центрирование, расположение на странице, а также обрамление и положение. При желании вы сможете и фильтр применить.

Редактирование изображения через специальную панель инструментов

Создать таблицу очень просто – необходимо кликнуть в панели инструментов по элементу «Вставить таблицу», выбрать требуемое количество строк и столбцов. То же самое, по сути, можно сделать через меню. Но у вас будет больше возможностей для добавления столбцов и строк, а также изменения оформления.

Вставка новой таблицы и изменение ее стиля

После нажатия на кнопку «Вставить» новая таблица отобразится на странице. Ниже появится панель инструментов для работы с ней, с помощью которой можно добавлять и удалять строки, менять стили, а также применять формулы.

Панель инструментов для таблицы в текстовом редакторе LibreOffice

К сожалению, в текстовом редакторе LibreOffice (как и в Word) не предусмотрена возможность создания диаграммы на основе данных из готовой таблицы. Поэтому, если вы хотите создать диаграмму, лучше сначала создать ее, а затем отредактировать значения. Для начала потребуется перейти в раздел «Вставка», затем выбрать одноименный пункт. Диаграмма будет с рандомными значениями – чтобы изменить их, следует нажать на пункт «Таблица данных» в меню. Меняете по необходимости все значения, цветовые схемы, наименования элементов и применяете изменения.

Как создать и редактировать диаграмму в LibreOffice

Типов диаграмм тоже довольно много – есть круговые схемы, столбчатые, ленточные, пузырьковые, смешанные и так далее.

Как поменять оформление и тип готовой диаграммы

Интересно, что в табличном редакторе есть возможность создания диаграммы на основе уже введенных данных. Необходимо лишь выделить нужный фрагмент, затем в меню «Вставка» выбрать «Диаграмма». Далее просто выбираете подходящий формат.

Как создать диаграмму в табличном редакторе LibreOffice

Заключение

Может показаться, что LibreOffice является копией офисного пакета Microsoft. Отчасти это правда, но в этой программе есть куча своих функций, которые в Word или Excel не найти (о чем я говорила выше). Тем, кто переходит на это приложение с Microsoft Office, интерфейс сначала может показаться не самым удобным, но вы быстро к нему привыкните.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *