В процессе подготовки доклада на GolangConf'2019 я использовал LaTeX. Несмотря на некоторые устаревшие вещи, немного необычное поведение, скудную или сложную документацию, я внезапно получил удовольствие. Я не стал "гуру" LaTeX, но я смог делать весьма неплохие слайды. И я хочу описать основные точки создания современной презентации на LaTeХ. Особенно это должно "зайти" айтишникам, которые по роду занятий программируют. Программировать свою презентацию — это увлекательно.



Почему LaTeX:


  • Гибкие оверлеи (когда информация на слайде появляется по очереди)
  • Повторяемость и однозначность
  • Пишем как программу. Некоторые ресурсы можно хранить отдельными файлами — код, список ссылок

Почему НЕ LaTeX:


  • На выходе только PDF
  • На тонкую подстройку таблиц и колонок, если они есть, может уйти больше времени, чем подвигать мышкой. Не надо делать презентацию в пять сложных слайдов в LaTeX. А в 55 — надо

Начнем с установки


Практически, сейчас существует один лидирующий дистрибутив утилит LaTeX/TeX, который поглотил все остальные — TexLive. Выпуски там нумеруются по годам. Не надо ставить археологические версии ранее 2018 года. Так что почти всем пользователям Ubuntu сразу сюда. Для "маководов" есть отдельный набор. Или можно использовать универсальный установщик, в том числе и для Windows.


Пользователи CentOS должны страдать.


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


Дистрибутив TexLive увесистый, занимает до 5Gb. Ставить надо texlive-full или подобный пакет (название может разниться от дистрибутива к дистрибутиву).


Однако, на дворе XXI век, и вы можете воспользоваться одним из онлайн-сервисов для работы с LaTeX. Почему-то немногие даже научные работники об этом не знают. Например, один из самых продвинутых.


Немного о LaTeX


Это не пошаговое руководство, как начать работать в LaTeX. Мы поверхностно посмотрим, как сделать презентацию, а по пути вы сами воспользуетесь Google. Но базовые отсылки я буду делать. Также обратите внимание на викикнигу.


Так будет выглядеть простейшая презентация с использованием пакета beamer — именно он отвечает за презентации:


\documentclass{beamer}% тип документа
% далее идёт преамбула
\title{My Super Topic}
\author{Ashot and Alice}

\begin{document}% начало презентации

\begin{frame}% первый слайд
\titlepage
\end{frame}

\begin{frame}% второй слайд
Hello, World!
\end{frame}

\end{document}

Поехали


А вот так выглядит готовая презентация, которую я сделал на GolangConf2019. Вокруг неё мы и будем крутиться.


Первое, что вы должны сделать, это забыть как страшный сон все отсылки к шрифтам TeX. Дональд Кнут начал разрабатывать систему шрифтов METAFONT в 1977 году, а в 1979 представил её. Это было ОЧЕНЬ круто на то время. Но на дворе 2019 год, тащить в сегодня стандарты наименований файлов 8+3 и специальные растровые шрифты можно только в минуты скуки. Все современные системы работают с современными векторными шрифтами. Утилиты TexLive имеют в своём составе новый компилятор документов — xelatex. Он полностью совместим с pdflatex, но работает с системными шрифтами. Всё что нужно дополнительно сделать, это подгрузить пакет fontspec или xltxtra (он подгружает fontspec) и задать шрифты:


% !TeX TS-program = xelatex

\documentclass[aspectratio=169]{beamer}

\usepackage{xltxtra}
\usepackage[main=russian,english]{babel}

\setmainfont{Arial}
\setromanfont{Times New Roman}
\setsansfont{Arial}
\setmonofont{Courier New}
...

В примере мы сразу задали размер презентации (16см на 9см), сделали комментарий чем собирать и подключили пакет babel, который мы разбирать не будем. Для пользователей Linux напомню, что в 2019 году TTF-шрифты можно кидать в директорию .fonts в домашнем каталоге.


Темы оформления


Можно делать презентацию и без специального оформления, но чувство прекрасного по умолчанию в beamer странное, поэтому практически все пользуются теми или иными темами. Обычно, темы оформления — это набор файлов .sty, размещенных там, где их может найти компилятор, т.е. там же, где и сам файл презентации. Подключается тема соответствующей строкой в преамбуле презентации:


\usetheme{gcr2019}% в скобках название темы

Есть, кстати, чудесное руководство по созданию простейшей темы оформления презентации. Я сделал 3 темы на ближайшие конференции Олега Бунина, одну для себя, две — для иллюстрации к этой статье: раз, два и три.


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


Оверлей


Оверлей — это когда у вас информация постепенно появляется на одном и том же слайде. Вот например:


\begin{frame}
    \begin{itemize}
        \item<1-> Живи, безумец!.. Трать, пока богат!
        \item<2-> Ведь ты же сам – не драгоценный клад.
        \item<2-> И не мечтай – не сговорятся воры
        \item<3-> Тебя из гроба вытащить назад!
    \end{itemize}
\end{frame}

Сначала появится первая строка, затем вторая и третья, а затем четвертая. Заодно мы увидели, как сделать ненумерованный список. Систему оверлеев можно прикрутить практически к чему угодно. Я, например, делал так подсветку строк кода (рассмотрим ниже).


Обратите внимание на строки в моих шаблонах:


\setbeamercolor{itemize item}{fg=black}
\setbeamercolor{itemize subitem}{fg=black}
\setbeamercolor{alerted text}{fg=black}
\setbeamertemplate{itemize items}{\textbullet}% отключает кошмарные синие треугольники
\setbeamerfont*{itemize/enumerate subbody}{parent=itemize/enumerate body}
\setbeamerfont*{itemize/enumerate subsubbody}{parent=itemize/enumerate subbody}
\setbeamerfont{alerted text}{series=\bfseries}

Закомментируйте строки (для комментариев используйте символ "%") и посмотрите, что будет. Не тот цвет, синие треугольнички и вот это вот всё.


Не нашел куда это определить. beamer предоставляет возможность несколько раз использовать один и тот же слайд. Это вот прямо очень круто:


\begin{frame}[label=again]{Слайд покажем ещё раз}
...
\end{frame}
...
\againframe{again}

Картинки


Возьмем пример из моей презентации. Две колонки, слева ненумерованный список, справа — картинка:


\begin{frame}{Редактор Acme}
        \begin{columns}[T,onlytextwidth]
                \begin{column}{0.44\textwidth}
                        \begin{itemize}
                                \item Для разработчиков
                                \item Автор --- \emph{Роб Пайк}
                                \item Написан на Alef
                                \item Alef = Acme
                                \item 30 лет с нами
                        \end{itemize}
                \end{column}
                \begin{column}{0.56\textwidth}
                        \includegraphics[width=\textwidth]{acme-alef.png}
                \end{column}
        \end{columns}
\end{frame}

Параметр [T,onlytextwidth] говорит о том, что вертикальное выравнивание производится по базовой линии строк вверх, а блок колонок имеют ширину равной ширине фрейма для текста. LaTeX сам сожмет картинку как надо. Можете создать свой пример и поиграться параметрами, чтобы увидеть, как и что будет перекрываться.



Листинг кода


Сразу оговорюсь, что подсветка синтаксиса в листинге кода в презентации не нужна. Если она там вам нужна — вы что-то делаете не так. Больше нужны выделения. Я использую стандартный пакет listings, который умеет подсветку синтаксиса, и не умеет выделений. Вы можете посмотреть настройки оформления блока листинга в любом из моих примеров:


\definecolor{acmebg}{HTML}{FFFFEF}
\definecolor{acmel}{HTML}{52AAAD}
\lstset{
        columns=flexible,
        keepspaces=true,
        showstringspaces=false,
        showtabs=false,
        tabsize=4,
        frame=single,
        basicstyle=\fontsize{10pt}{12}\bf\ttfamily\color{black},
        backgroundcolor=\color{acmebg},
        commentstyle=\color{black},
        keywordstyle=\color{black},
        stringstyle=\color{red},
        rulecolor=\color{acmel},
        framerule=1pt
}

Для выделения фона я пользуюсь пакетом lstlinebgrd, который "заброшен". Приходится вставлять исправляющий код. А вот этот дополнительный код даёт мне команду \btLstHL, которая позволяет подсвечивать строки в оверлее:


\begin{frame}[fragile]{Limbo. Примеры синтаксиса}
        \begin{lstlisting}[basicstyle=\fontsize{12pt}{12}\bf\ttfamily\color{black},linebackgroundcolor={%
                \btLstHL<1>{1}%
                \btLstHL<2>{2-3}%
                \btLstHL<3>{5,6}%
                \btLstHL<4>{8,9}%
                \btLstHL<5>{11}%
                }]
i, j: int;
k := 1;         # int
b := byte 2;    # byte

s: string;      # длина в символах
s1 := s[0:];    # срез

a: array of int;
a = array[10] of int;

myfunc: fn(i, k: int, s: string) : (list of string, int);
        \end{lstlisting}
\end{frame}


Библиография


Для простоты и универсальности я использую пакет biblatex. Вот тут есть сложность. Пакет beamer перекрывает часть умолчаний biblatex. Вот эти команды убирают иконки и задают фонт библиографии:


\setbeamertemplate{bibliography item}{\insertbiblabel}
\renewcommand*{\bibfont}{\fontsize{8}{1}\selectfont}

Надо помнить важный момент — библиография задаётся в отдельном файле. В примерах в шаблонах я пишу библиографию в основном тексте с помощью пакета filecontents, который в свою очередь создаёт нужный реальный файл. И компиляция происходит в ЧЕТЫРЕ шага. Сначала просто xelatex компилирует файл и создаёт вспомогательные файлы. Затем утилита biber компилирует файл библиографии, затем надо ещё дважды прогнать xelatex. Да, с препроцессорами там всё сложно.


Пакет biblatex тоже настраивается. Но на первое время хватит того, что есть у меня в примерах.


Послесловие


Я получил удовольствие и от подготовки презентации, и от подготовки материалов к этой статье. Я надеюсь, если кто-то хотел, но не мог решиться начать использовать LaTeX в своей работе — я сломал этот барьер. Конечно, я не сделал пакетов, я не копал в глубину, я не упомянул важные темы рисования. Но я думаю, что это уже всё придёт, как только вы начнете пользоваться инструментом. Неплохие практические статьи есть и на Хабре по тегу #latex.


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

Комментарии (109)


  1. olegchir
    14.10.2019 12:25
    +1

    Фичи Acme не раскрыты. Почему не любой обычный редактор, например, VSCode, или Eclipse, или IntelliJ IDEA?


    1. schors Автор
      14.10.2019 12:29

      Потому что в 89-ом году их ещё не было? :)))


    1. schors Автор
      14.10.2019 12:29

      Презентацию я конечно в vim писал. Это просто кусок самой презентации.


  1. Shkaff
    14.10.2019 12:46

    Долгое время делал презентации в beamer, из любви к latex и все такое прочее. Но потом осознал, что затраты времени на создание хорошей презентации просто несравнимы с условным Keynote. То, на что там требуется несколько секунд (например, выравнивание картинок), в beamer уходили часы. В итоге, думается, в современном мире beamer уже менее актуален, чем раньше: красивые формулы делаются latexit или подобным, а все остальное проще, удобнее и быстрее в редакторах.


    1. schors Автор
      14.10.2019 12:53

      Давайте посмотрим вопрос цены. Я даже и поспорить-то не могу — я в глаза его не видел. И вероятно никогда не увижу ) Я могу пообсуждать разъезжающиеся презентации в PowerPoint, LibreOffice. Но Keynote… Я причем ничего не имею против, но «зачем beamer, когда есть keynote» — очень плохой аргумент. Потому что beamer он вот есть, а keynote он очень ограниченно есть


      1. Shkaff
        14.10.2019 13:08

        «зачем beamer, когда есть keynote» — очень плохой аргумент.
        Собственно я не это хотел сказать. А скорее в обратную сторону: если есть keynote (т.е. используете mac), то в beamer нет смысла.
        Давайте посмотрим опрос цены.
        Конечно, если нет доступа к платному софту, beamer — нормальная альтернатива. Хотя, кажется, есть множество достаточно дешевых программ для презентаций за пределами powerpoint.

        Я все к тому, что раньше beamer был как latex по отношению к ворду — недостижимой вершиной. Т.е. хотите красивые формулы и картинки + стабильное форматирование, это единственный вариант. Сейчас это более не так. Можно делать красивые презентации, полные формул, в другом софте и гораздо быстрее/эффективнее. Кстати, keynote — кажется, не лучший из них даже, просто пример.


        1. schors Автор
          14.10.2019 17:04

          Тогда нужен ещё пример. Keynote — это вселенная MacOS и вот это всё. Есть другой, более традиционный, платный софт, но к нему есть вопросы. Самый распространённый — почему у меня всё разъехалось. Другой момент — формулы нужны очень ограниченному кругу людей. И да, LaTeX тут стандарт. Как Fortran в математике, хотя казалось бы.

          Другой вопрос, что я считаю, что люди делятся на тех, кому подвигать мышкой, и кому пописать команды. Причем, последних субъективно больше, но у первых порог входа ниже. Я собственно к тому, что «latex к ворду» тоже не совсем корректное сравнение. Презентации я ваял в vim, как и программы на go. А не в эклипсе, емаксе или том же acme :) Сравнивать можно все инструменты, но уже предметно. Нет никакого word vs vim :)


          1. DaylightIsBurning
            14.10.2019 17:20
            +1

            Fortran в математике
            Ммм? О чем речь? Number crunching?


            1. schors Автор
              14.10.2019 17:26

              NumPy например


              1. 0xd34df00d
                14.10.2019 17:32
                +1

                А причем Фортран к numpy?


                А вообще математика большая. Кое-где стандарт — agda, например.


                1. schors Автор
                  14.10.2019 17:34

                  Собери без Фортрана. Я собственно вот в этом месте на шлагбаум налетел


                  1. DaylightIsBurning
                    14.10.2019 17:36

                    Numpy написан на C.


                    1. schors Автор
                      14.10.2019 17:57

                      Давайте раскрутим это до netlib. Суть не поменяется


                      1. DaylightIsBurning
                        14.10.2019 18:06

                        Я сомневаюсь, что хоть какой-то значимый новый number crunching софт пишут на fortran. Всё на C/C++/assembler, где есть соотв. библиотеки. Код на фортран обычно приходится писать тем, кто поддерживает старый велосипед.


                        1. 0xd34df00d
                          14.10.2019 18:30

                          Есть реализации blas и lapack, написанные на фортране. Есть, впрочем, и без него.


                          1. DaylightIsBurning
                            14.10.2019 18:39

                            есть-то есть, но кому они теперь нужны? :)


                        1. Bwana
                          15.10.2019 16:59

                          Не сомневайтесь, еще как пишут. Основной язык программирования с использованием MPI — фортран. Собственно, там еще в привязках и С есть, но для численных расчетов физики и инженеры предпочитают таки фортран. Причина банальна — в фортране есть полноценная и удобная работа с комплексными числами, матрицами и многомерными массивами, чего нет ни в Cи, ни в C++ (ISO/IEC 9899-2011 6.5.2.1 Array subscripting).
                          Собственно, в C и C++ нет ничего для разработки числодробилок, чего нет в фортране, но не наоборот — в фортране есть много чего, чего нет в ни в C, ни в C++. Специализированный инструмент всегда лучше, нежели универсальный.


                          1. DaylightIsBurning
                            15.10.2019 17:04

                            Вы это из какого года пишете? Или что за софт? Я просто физик, работаю с HPC, не знаю ни одной значимой софтины на Fortran, написанной за последние 10-15 лет. Зато сходу могу назвать тройку программ, которые были переписаны с Фортрана на плюсы или С.


                            1. Bwana
                              15.10.2019 18:25

                              Назовите — даже интересно, кто и что переписал.


                              1. DaylightIsBurning
                                15.10.2019 19:16

                                AMBER, Psi4, Cloudy…
                                Я слышал, что есть что-то моложе 15 лет на Фортране, что и понятно, ведь есть люди, которые привыкли к Фортрану и им так удобней. Тем не менее, как мне кажется, уже давно идет постепенный отказ от Fortran. Примерно как с COBOL. Какой MPI софт Вы имели ввиду?


                            1. Bwana
                              15.10.2019 18:43

                              На фортране написано слишком много, чтобы это можно было переписать.
                              Тот же lapack, который установлен на всех linux-кластерах в мире, написан на фортране. На си только привязки.
                              Его производные:
                              CLAPACK — f2c’ed conversion of LAPACK
                              ScaLAPACK — fortran
                              BLAS — Fortran
                              CBLAS — C API for BLAS)
                              BLAS++ — C++ API for BLAS and Batch BLAS.
                              LAPACK++ — C++ API for LAPACK.

                              А Вы и дальше считайте, что кто-то переписал netlib.org на C, C++ и на МСМ-языки.

                              Если Вы купите компиляторы интел, с ними будет идти оптимизированный под их процессоры lapack, однако на чем он написан, большой секрет. В любом случае их ifort производит самый быстрый код, и он быстрее, чем произведенный icc. По крайней мере, на задачах разложения матриц, вычисления их спектра и прочих элементов ЛА.


                              1. DaylightIsBurning
                                15.10.2019 19:35

                                Написано-то написано, но пользуются ли им, поддерживают ли его? Какова сегодня реальная роль фортрановского BLAS, когда ATLAS — и тот на C. Про Eigen, GSL/CBLAS и т.д. вообще молчу.
                                Я не говорил, что netlib переписали на C. Сравнение ifort с icc к моему утверждению отношения не имеет. Я говорил, что fortran — это устаревший язык, как COBOL. Что-то на нём есть, но мало, чисто по инерции и постепенно сходит на нет.


                  1. 0xd34df00d
                    14.10.2019 17:52

                    Посмотрел на зависимости numpy в своём дистре — зависит от виртуалов, предоставляющих cblas и lapack. От фортрана не зависит.


                    1. schors Автор
                      14.10.2019 17:57

                      netlib


                      1. DaylightIsBurning
                        14.10.2019 18:09

                        там просто куча старья. Старье на фортране есть. Но более-менее востребованные части уже переписаны на C++ или C.


                        1. Bwana
                          15.10.2019 18:56

                          Там гнездится софт, использующийся сегодня всеми значимыми опенсорсными проектами, а также многими проприетарными. На замену этому софту нет ничего и в проекте не просматривается. Как говорится, кому не нравится фортран и хочется переписать нетлиб на <подставьте сюда свой любимый язык>, тот не в состоянии это сделать, а те, кто может — их все устраивает.


                          1. DaylightIsBurning
                            15.10.2019 19:43

                            всеми значимыми опенсорсными проектами
                            Прям всеми? Скорее менее чем 1%. Кроме того, там много софта на C. Там есть код на fortran, но его востребованность, не так высока и, видимо, падает.
                            На замену этому софту нет ничего и в проекте не просматривается
                            Да ладно? ATLAS, Eigen, Armadillo и аналоги? Какой такой там есть софт, которому нет аналогов не на фортране?
                            На фортране есть код, который кого-то (многих) всё ещё устраивает и им пользуются. Ну и всё.


                      1. 0xd34df00d
                        14.10.2019 18:28

                        % eix netlib
                        * sci-libs/coinor-netlib
                             Доступные версии:      (~)1.2.6
                             Домашняя страница:     https://projects.coin-or.org/svn/Data/Netlib
                             Описание:              COIN-OR netlib models

                        Похоже, отношения оно не имеет.


                        Собственно, судя по ебилду, я и numpy могу собрать без lapack. Да и если запросить установку, то ничего фортраноподобного не втягивается (собираемость, впрочем, я не проверяю, там слишком много новых питонопакетов).


                        1. schors Автор
                          14.10.2019 18:43
                          -1

                          Мне так лень разбирать. У меня клиент на легаси попросил собрать ему NumPy, я воткнулся в netlib, которого не было на той системе и в пакетах не было, и собрать я не смог, потому что собрать там фортран тех лет я посчитал овертаймингом уже решения проблемы. Может 30 лет не переписывали и за 3 переписали, но хз


                          1. DaylightIsBurning
                            14.10.2019 18:51
                            +1

                            возможно, там есть какой-то код, которые 20 лет никто не трогал потому, что он никому особо не нужен :).


                    1. Bwana
                      15.10.2019 18:46

                      lapack в опенсорсных проектах с netlib.org и написан на фортране.
                      cblas — всего лишь интерфейс к lapack.


          1. Shkaff
            14.10.2019 17:43
            +1

            Я собственно к тому, что «latex к ворду» тоже не совсем корректное сравнение.

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

            Другой момент — формулы нужны очень ограниченному кругу людей. И да, LaTeX тут стандарт.
            Да, но есть другие инструменты, которые позволяют генерировать latex как одиночное изображение — тот же упомянутый latexit. Генерите формулу, копируете изображение в презентацию — и вуаля. У вас мощь latex в эффективности того же keynote.

            А при чем тут vim я вообще не понял, честно признаться.


            1. schors Автор
              14.10.2019 18:04
              +1

              Честно говоря, мы вроде об одном и том же :)) Но только я ни MacOS, ни Keynote никогда в глаза не видел и честно не готов предметно дискутировать. Как, впрочем, я не делал верстку больших документов или документов со строгими требованиями. А вот больше презентации делал. И несмотря на то, что я набил шишек с LaTeX это для меня оказалось эффективнее LibreOffice Impress/Power Point. Но вроде это Вашим тезисам и не противоречит.


              1. Shkaff
                14.10.2019 18:21
                +1

                Наверное, об одном и том же:) Я, собственно, не хотел вас как-то убеждать отречься от beamer: у каждого свой опыт в конце концов.
                Для меня просто было всегда «latex — сила, а ворд и прочия powerpoint — фу». И я долгое время чисто из принципа не пытался делать ничего кроме beamer, еще всех убеждал им пользоваться. А потом оказалось, что все, что мне действительно важно в beamer — хорошее отображение уравнений — можно просто импортировать в любой другой софт. А все остальное удобнее и быстрее в этом другом софте, в моем случае Keynote. Единственный пункт под вопросом — стабильность верстки — в моем случае ни разу не становился проблемой. Но я не использую анимации, а слайды делаю дублируя предыдущий и удаляя ненужные части + использую сетку для ориентации.

                Я не знаю совсем, честно признаться, какие там проблемы с расползанием powerpoint, я всегда все равно в pdf экспортирую, и там все ок вроде. Но, по правде говоря, РР я пользуюсь исключительно редко.

                Отдельно замечу, что это, возможно, особенность презентаций: мне важно иметь много графической информации, часто с хитрым позиционированием, и формулами в странных местах (поверх изображений и т.п.). Возможно, для чисто формульных презентаций или кода я бы использовал beamer и дальше.


                1. schors Автор
                  14.10.2019 18:50
                  +1

                  > Но я не использую анимации, а слайды делаю дублируя предыдущий и удаляя ненужные части

                  Вот на HighLoad++ 2018 я в этом месте погорел. Мне пришлось срочно отменять нумерацию, «раскручивать» вручную оверлеи, а потом я в пару мест решил внести изменения. Как я всех «любил». А LaTeX в этот раз на GolangConf 2019 меня от этого спас, хотя я презентацию доделывал за два часа до доклада — обнаружил и интересный материал. ВОТ ОНО!!! :)


                  1. Shkaff
                    14.10.2019 19:07
                    +1

                    Представляю… Да, надо признаться, изменения при большом количестве слайдов, растущих из одного через оверлеи, иногда требуют времени (и эмоционального ресурса), что есть, то есть. Но я как-то привык уже, что ли, или наловчился быстро копипастой все решать.

                    Для меня в итоге возможность быстро выделить какой-то элемент на изображении, обвести график или пририсовать деталь решает все равно: не надо отмерять пиксели в отступах, чтобы он попал на нужное место, а перетаскиваешь ровно куда надо. И вот это мне пригодилось уже множество раз: уж опыт изменения и допиливания презентаций за полчаса до доклада у меня большой, спасибо разгильдяйству:)


                1. dimaleks
                  14.10.2019 22:29

                  Но я не использую анимации, а слайды делаю дублируя предыдущий и удаляя ненужные части + использую сетку для ориентации.

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


                  1. Shkaff
                    14.10.2019 23:15
                    +1

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


          1. McAaron
            15.10.2019 13:46
            +1

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

            Делать презентации в LaTeX — очень трудоемкий процесс. Я несколько раз пытался работать с бимером и всякий раз отказывался именно по этой причине.
            С другой стороны, PowerPoint и прочие аналоги имеют весьма скудные возможности форматирования текста. Тем, кто пользуется кнопками ЖПН и делает отступы пробелами, это фиолетово, а тем, кто работает со стилями, совершенно неприемлемо.
            Сам делаю презентации лекций в Libreoffice Writer с плагином TexMaths. Абзацы, символы, перечни — все стилями. Ничего не разъезжается — просто каждую страницу (слайд) нужно завершать разрывом страницы.


        1. 0xd34df00d
          14.10.2019 17:31
          +1

          Есть ещё вопрос версионирования. Опыт совместной работы над beamer-презентациями в гите (с пуллреквестами и этим всем) у меня есть, и он хороший. А как с этим у Keynote/Powerpoint/etc?


          1. DaylightIsBurning
            14.10.2019 17:34
            +1

            На самом деле, не так плохо, как кажется. Office360 или как там его и GoogleDocs имеют и версионирование и совместную _одновременную_ работу (чего git не умеет).


            1. 0xd34df00d
              14.10.2019 17:55

              Это, возможно, от воркфлоу зависит, но вот одновременно работать над презентацией или статьёй ни разу не хотелось (примерно так же, как не хотелось одновременно работать над кодом, по крайней мере, при его написании, а не отладке).


              В конце концов, что с коллегами по работе, что до того в вузе — я делаю какие-то правки, коллеги или научрук в комментах к PR пишет, что поменять, чуть реже смотрят на готовую pdf'ку, не написано ли ерунды в формулах и нормальные ли картинки, условно. Это заведомо очень асинхронный процесс.


              Ну и git log/checkout/blame (чтобы понять контекст данных конкретных изменений) тоже оказываются весьма полезными.


              Может, у меня программизм головного мозга, хз.


              1. DaylightIsBurning
                14.10.2019 18:12

                Согласен, одновременная работа над презентацией нужна редко, возможно при совместной подготовке презентации, когда кто-то кому-то помогает её готовить. Но версионирование есть и в Google Docs.


            1. schors Автор
              14.10.2019 18:47

              У LaTeX есть www.sharelatex.com, я упоминал его всуе в статье


          1. Shkaff
            14.10.2019 17:47

            Ну очевидно с гитом они никак (только разве как целый файл заливать или экспорт в html делать). Но совместная работа в реальном времени, скажем, Keynote поддерживается из коробки.


  1. NeuroHunter
    14.10.2019 12:57

    Это хорошо, когда ты делаешь презентации, как самостоятельная единица. А вот как делать презентации в LaTeX, работая в корпорации? Или, перефразируя вопрос — как использовать уже существующие шаблоны MS Office для удобного создания презентации в LaTeX?


    1. schors Автор
      14.10.2019 13:02

      Или переписывать, или никак. В корпорации я бы предложил рассмотреть вопрос целесообразности куда-нибудь наверх. Например, большинство шаблонов достаточно простые. Я перегнал стандартные шаблоны конференций, потому что там вообще просто картинки. И шрифты подобрал. В 90% случаев корпоративных шаблонов — там примерно так же. А в 90% из оставшихся 10% все свистелки нецелесообразны


  1. Taus
    14.10.2019 13:22

    Практически, сейчас существует один лидирующий дистрибутив утилит LaTeX/TeX, который поглотил все остальные — TexLive.

    Как минимум есть ещё активно развивающийся MiKTeX, который обновляется чаще TeX Live. У него гораздо более удобный GUI для пользователей Windows и поддерживает из коробки установку пакетов on-the-fly.


    1. schors Автор
      14.10.2019 15:33

      Это действительно упущение. Он как-то мимо меня прошёл. Но он чисто под Windows…


      1. Taus
        14.10.2019 16:17

        Не только. Есть готовые образы (правда не совсем последней как у windows-версии) и для MacOS, и для части дистрибутивов Linux. Также можно его собрать самому из исходников.


        1. schors Автор
          14.10.2019 17:27

          Ну кстати. Это вот прямо повод для небольшой статьи я считаю


    1. windgrace
      14.10.2019 19:10
      +1

      Установку на лету умеет и texlive:

      tlmgr install texliveonfly && texliveonfly my_file.tex


      Ну и тащить texlive-full смысла нет, там 5 гигов ненужных пакетов, а хватает, судя по опыту, всего пятисот метров. Так что ставить минимальную сборку, а дальше устанавливаем необходимое через texliveonfly.


  1. homocomputeris
    14.10.2019 15:47

    Он полностью совместим с pdflatex, но работает с системными шрифтами.

    Это не так, и почему написано прям в этом же предложении.
    Грузить XeLaTeX, чтобы использовать Таймс и Ариал — это круто :)

    На выходе только PDF

    Технически, тоже неправда (хотя другие стандартные опции ещё хуже). Пандок умеет переводить тех в другие разметки и даже в пауэрпоинтовский формат.


    1. schors Автор
      14.10.2019 15:50

      Не столько с Таймс и Ариал, сколько с рендерингом оных. Ну и не иметь возни с угадыванием энкодинга и вот этого вот всего. Вы ведь прекрасно понимаете о чем я


      1. homocomputeris
        14.10.2019 16:11

        А что с их рендерингом?


        1. schors Автор
          14.10.2019 17:31

          Выглядит отвратно. Особенно там плохо с кернингом


    1. schors Автор
      14.10.2019 17:39

      У меня в статье ссылки на одну боевую и две шаблонные презентации. Переведите их в ppt Пандоком и покажите тут в анимированном gif. Можно например ppt потом конвертнуть в pdf и дать мне. И посмотрим, можно ли так вообще делать, или это просто строка в доку Пандок


  1. KvanTTT
    14.10.2019 17:30

    Пришел к подобному подходу (Современный формат презентаций), только Latex все же сложновато — я за Markdown :)


    1. schors Автор
      14.10.2019 17:40
      +1

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


      1. KvanTTT
        14.10.2019 18:04

        Почему для доклада на конфе не зайдет? У меня заходило.


        1. schors Автор
          14.10.2019 18:12

          Я так понимаю, это ведь онлайн?


          1. tmin10
            14.10.2019 18:17
            +1

            Посмотрел: там простые статичные файлы, можно скачать всё и открыть локально: github.com/KvanTTT/Presentations/tree/master/2018-05-15-Source-code-analyzers-how-generalizable-are-they


          1. fiddle-de-dee
            14.10.2019 18:25
            +1

            Нет, они прекрасно переводятся в html, который можно выложить куда угодно, или для конференций часто лучше сделать pdf. Там, конечно, нет въезжающей и выезжающей анимации, но зато не слетит


            1. KvanTTT
              14.10.2019 18:48

              Так в pdf тоже есть экспорт, но правда кривоватый. А html открывается всеми современными браузерами на всех популярных платформах, собственно в статье об этом расписано.


              1. fiddle-de-dee
                14.10.2019 19:57

                По крайней мере Reveal-презентации Decktape прекрасно переводит в pdf. Это, конечно, растры, но с заданным разрешением, поэтому в нормальном качестве. Причем как во варианте с анимацией, так и во варианте без нее


      1. fiddle-de-dee
        14.10.2019 18:19
        +1

        Мы используем Asciidoc, но суть не меняется. На всех конференциях и в полиграфии — самое то. За последние два года не сделал ни одной презентации в Powerpoint и аналогах. Коллеги используют Markdown и тоже с отличным результатом. И Latex, как мы видим, прекрасен. Отличная статья на правильную тему. Спасибо автору


      1. KvanTTT
        14.10.2019 18:55

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


        Поэтому средства, описанные в статье (использование javascript), даже лучше ложатся на концепцию программирования презентаций, чем Latex. Ведь с финальной программой обычно можно взаимодействовать, а не просто получать результат каких-то вычислений.


        1. DistortNeo
          15.10.2019 00:29

          В наше время презентация — это не просто набор статичных страничек, пусть с оверлеями.

          Самая лучшая презентация — статика. Ну ещё GIF-ки иногда допустимы. Все остальные свистелки и перделки не несут аболютно никакой полезной информации и только мешают восприятию контента.


          А


  1. IvanPonomarev
    14.10.2019 18:07
    +2

    Привет единомышленникам ) См. Презентация как код, или Почему я больше не пользуюсь Powerpoint-ом

    Я умею в LaTeX и люблю LaTeX, но чтобы сделать технологию более доступной коллегам, остановился на AsciiDoctor. Но LaTeX — технология более продвинутая, конечно, если есть смелость перелезть через входной барьер.


    1. schors Автор
      14.10.2019 18:14

      Честно говоря, я не умею в LaTeX. Это мой полуторный опыт. Первые 0.5 был счет и квитанция для тестов. Я там ежа родил с русскими шрифтами и pdflatex. Но тут внезапно барьер перешагнулся и прямо чтобы трудностей нет. Всё решается крайне небольшим набором инструментов


      1. Oxyd
        16.10.2019 05:41
        +1

        Фил, слушай, а ты не заморачивался с генерацией извещений Почты России, ну тех которые приходят когда в отделение прибывает посылка с алишечки, а то я задалбываюсь кадый раз у них на сайте вводить одно и то-же. Главный затык это сгенерить правильный штрих-код трека посылки.


        1. schors Автор
          16.10.2019 07:46

          Не-а. Вопрос интересный


  1. Carburn
    14.10.2019 18:20

    Это не программирование, а разметка.


    1. schors Автор
      14.10.2019 18:24

      Мммм… Нет :)


      1. Carburn
        14.10.2019 19:46
        +1

        LaTeX это язык разметки, а не язык программирования.


        1. 0xd34df00d
          14.10.2019 21:57

          Он Тьюринг-полон, так что его вполне можно называть языком программирования.


        1. schors Автор
          14.10.2019 23:04

          LaTeX это вообще макрорасширение. Но TeX вполне язык программирования


  1. schors Автор
    14.10.2019 18:52
    +1

    Никто не оценил саму презентацию :((

    На самом деле я забыл задать интересный вопрос. А есть ли нормальный показыватель презентаций в PDF? С видео, с двумя экранами, с таймером, с комментариями?


    1. Shkaff
      14.10.2019 19:16

      Я когда-то пользовался pdfpc, вроде было вполне.


    1. IvanPonomarev
      15.10.2019 12:23

      Кстати, не задумывался о том, что такое возможно с PDF… В ситуации, когда конференция не даёт подключать свой ноутбук, у них в любом случае будет только Adobe Acrobat в Full-screen режиме.

      В ситуации, когда свой ноутбук подключить можно, я открываю RevealJS презентацию в браузере, нажимаю кнопку S — и в отдельном окне браузера всё есть. Но я этим обычно не пользуюсь, текущего слайда мне вполне достаточно.


      1. schors Автор
        15.10.2019 16:57

        Ну вот кстати Okular. Надо постестировать. Ещё есть какой-то pdfpc


        1. Oxyd
          16.10.2019 05:44
          +1

          Вот, кстати, о KDE… точнее KDE Connect, который с телефона позволяет рулить презентацией на компе. Не пробовал?


          1. schors Автор
            16.10.2019 07:47

            Ну и где ты в общем случае на конфе на компе организаторов найдешь KDE?


  1. le1ic
    14.10.2019 20:35

    Когда писал диссер, тоже делал доклад в latex/pdf. и с версиями в гите. Но это была ВАЖНАЯ ПРЕЗЕНТАЦИЯ ))
    А по работе все презентации очень короткоживущие, практически одноразовые, и большого смысла вкладываться в них нет. Использую самое простое — google slides. Да, фич мало, но это стимулирует к минималистическому стилю ))
    Либо если это маркетинг, то они наоборот один раз вылизаны и показываются тысячу раз.


  1. grey_narn
    14.10.2019 22:36
    +2

    И компиляция происходит в ЧЕТЫРЕ шага

    Чтобы не заниматься всем этим ужасом, какие-то хорошие люди написали latexmk. Пишем в консоли latexmk -pdf myfile.tex и смотрим, как все это вызывается столько раз, сколько надо, и в той последовательности, в которой надо (никогда не мог ее запомнить). Подозреваю, что ему можно так же просто сказать, что нужно использовать xelatex.


    1. schors Автор
      14.10.2019 23:05

      Кстати. Не знал


    1. Oxyd
      16.10.2019 05:49

      Похоже что можно…


  1. 7abbix
    15.10.2019 09:59

    Стесняюсь спросить, а где, собственно, те самые неплохие слайды, которыми вы сюда людей заманили?


    1. schors Автор
      15.10.2019 09:59

      Поехали -> первое предложение


      1. 7abbix
        15.10.2019 10:17

        Что «первое предложение»? Где слайды?
        Почему в превью к статье вы их упоминаете, но не удосужились нормально дооформить статью и продемонстрировать результат?


        1. schors Автор
          15.10.2019 10:25

          Не очень понимаю претензию. Я оформил так и расположил упоминания так, как я считал нужным для повествования. Превью — собственно в превью к статье превью тех слайдов и стоит. Возможно, это не совпадает с какими-нибудь стандартами и соглашениями, но мне ничего об этом неизвестно.


        1. Shkaff
          15.10.2019 11:33

          Я думаю, они тут по ссылке на GolangConf2019:

          А вот так выглядит готовая презентация, которую я сделал на GolangConf2019. Вокруг неё мы и будем крутиться.


          1. schors Автор
            15.10.2019 11:37

            Да, возможно. Подвинул ссылку. Спасибо


            1. 7abbix
              15.10.2019 13:34

              Ясно, спасибо. Если это те самые слайды, возможно, мои ожидания были выше.


              1. schors Автор
                15.10.2019 16:56

                Да, это те самые слайды


  1. GeMir
    15.10.2019 10:09
    +1

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

    Большинство научных статей и работ по MINT (STEM) тематике до сих пор верстается в LaTeX и людям, относительно далёким от IT (профессора, доценты) привычнее использовать LaTeX как универсальный и кроссплатформенный инструмент, чем освоить что-то новое. К тому же:

    image


    1. schors Автор
      15.10.2019 10:27

      Ну кстати, умолчательное удобство WYSIWYG — миф. Он только _иногда_ снижает порог входа. Вообще везде, где это слово уместно


  1. Tomasina
    15.10.2019 10:11

    [aspectratio=169] это не "размер презентации 16 на 9 см"


    1. schors Автор
      15.10.2019 10:29

      beamer/beamer.cls


      \DeclareOptionBeamer{aspectratio}[43]{%
        \ifnum#1=1610%
          \beamer@paperwidth 16.00cm%
          \beamer@paperheight 10.00cm%
        \else\ifnum#1=169%
          \beamer@paperwidth 16.00cm%
          \beamer@paperheight 9.00cm%
        \else\ifnum#1=149%
          \beamer@paperwidth 14.00cm%
          \beamer@paperheight 9.00cm%
        \else\ifnum#1=54%
          \beamer@paperwidth 12.50cm%
          \beamer@paperheight 10.00cm%
        \else\ifnum#1=43%
          \beamer@paperwidth 12.80cm%
          \beamer@paperheight 9.60cm%
        \else\ifnum#1=32%
          \beamer@paperwidth 13.50cm%
          \beamer@paperheight 9.00cm%
        \else\ifnum#1=141%
          \beamer@paperwidth 14.85cm%
          \beamer@paperheight10.50cm%
        \fi\fi\fi\fi\fi\fi\fi%
      }


      1. Tomasina
        15.10.2019 12:21

        Коряво же как-то, ведь aspectratio — это соотношение сторон.
        И зачем для экранного документа указывать единицы в сантиметрах? Наверное, исторически сложилось.


        1. schors Автор
          15.10.2019 16:55

          Не, ну привязаться-то надо к чему-то. Те же шрифты должны же от чего-то отталкиваться. посмотрите, PowerPoint и LibreOffice тоже дают размер какой-то


  1. shoorick
    15.10.2019 12:20

    Пробовал и упоминающийся в статье beamer, и кучу других инструментов — в итоге остановился на Shower — как в чистом виде (презентация пишется с использованием HTML-разметки), так и с использованием Bochar, чтобы писать презентацию на Маркдауне. Как веб-разработчику, мне такой подход вполне удобен.


    1. schors Автор
      15.10.2019 16:54

      Тоже вариант, конечно. Но насколько он позволяет делать те простые вещи, о которых я говорил выше? Прокрутите мою презентацию


  1. Alexey2005
    15.10.2019 20:08
    +1

    Что меня напрягает во всех этих системах разметки — слишком много нажатий Shift для ввода спецсимволов, и рука не отлипает от клавиш переключения раскладки, потому что через предложение приходится вставлять очередной тег на английском.


    1. GeMir
      16.10.2019 00:06
      +1

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

      Если вас утомляет нажатие на Shift, возможно порадует тот факт, что »\«, с которой начинаются все команды TeX, вводится в macOS нажатием Alt+Shift+7.


      1. schors Автор
        16.10.2019 01:23

        АААААААААААААААААААААААААААААА!!!!!!!!!!!!!!!!!!!!!


      1. Shkaff
        16.10.2019 08:35

        Если вас утомляет нажатие на Shift, возможно порадует тот факт, что »\«, с которой начинаются все команды TeX, вводится в macOS нажатием Alt+Shift+7.

        У вас странная раскладка… У меня в латинице на mac book это отдельная клавиша (слева от Enter).


        1. GeMir
          16.10.2019 09:01

          Стандартная немецкая QWERTZ.

          image


          1. Shkaff
            16.10.2019 09:10

            ах вот оно что… это да, эту раскладку придумали в аду для мучения худших представителей рода человеческого и по недосмотру выпустили на Землю. Но я не представляю, почему бы использовать ее для программирования вместо стандартной латиницы. У меня три раскладки: немецкая, русская и английская, прекрасно живут вместе.