Prezentacja w Markdown

Wprowadzenie

Chcielibyśmy stworzyć prezentację zgodną z szablonem Politechniki Wrocławskiej, ale nie mamy Windowsa, Worda czy innego PowerPointa… Politechnika daje dostęp do systemu Office 365 więc ściągamy sobie szablon i logujemy się do Office 365.

No i się nie da. Office 365 nie akceptuje plików w formacie .potx.

LaTeX wydaje się za trudny. Co zrobić?

To może tak. Potrzebny nam będzie program pandoc i jakiś edytor tekstowy oraz odrobina znajomości języka znaczników Markdown.

Slajd tytułowy

Na początku pliku Markdown jest zestaw metadanych zapisanych w formacie YAML. Wygląda on tak:

---
title: Moja pierwsza prezentacja w Markdown
subtitle: "fontsize:11pt"
author: Wojciech Myszka
institute: Katedra Mechaniki, Inżynierii Materiałowej i Biomedycznej
date: 17 luty 2025
theme: NewPwr
themeoptions: 
lang: PL-pl
aspectratio: 169
fontfamily: iwona
fontsize: 11pt
---

Ba jego podstawie tworzony jest slajd tytułowy. Większośc parametrów jest samowyjaśniająca.

W przypadku wielu autorów można użyć następującej formy:

author:
- First Author
- Second Author
- 

Nie ma obowiązku używania pól subtitle: i/lub institute:.

Pole themeoptions: pozwala zdefiniować opcje specyficzne dla szablonu. W przypadku szablonu uczelnianego może to być

themeoptions:
- lang=pl
- hr=false

(patrz dokumentacja)

Niestety język slajdów trzeba deklarować dwukrotnie.

Pole fontfamily: pozwala zdefiniować użyty font. Gdy pominiemy — wybrany będzie font standardowy; fontfamily: iwona — font iwona, itd.

fontsize: Definiuje podstawowy rozmiar fontu użytego do składu slajdów; dopuszczalne wartości to 8pt, 9pt, 10pt, 11pt (wartość domyślna), 12pt, 14pt, 17pt, 20pt.

  • standardowa wartość to 11pt,
  • 17pt to wartość zbliżona do standardowego rozmiaru fontu PowerPoint i Impress.

Inne parametry, których można użyć w tym miejscu to:

  • titlegraphics: Pozwala włączyć obrazek w slajdzie tytułowym. Obecnie niezalecane, bo niezbyt dobrze wygląda
  • logo: parametrem powinna być nazwa pliku graficznego, który zostanie umieszczony na każdym slajdzie. Plik nie powinien mieć zbyt wielkich rozmiarów, żeby nie zasłaniał treści slajdu.

Jest ich nieco więcej, zaawansowanym użytkownikom polecam zapoznanie się z dokumentacją.

Poniżej wygląd slajdu tytułowego wygenerowanego z użyciem różnych wielkości fontsize.

    / [pdf]

Treść prezentacji

  • Treść dokumentu wypełnią kolejne slajdy

  • Formatujemy je zgodnie z zasadami Markdown

  • Każdy slajd powinien mieć swój tytuł, który dodajemy jako nagłówek pierwszego poziomu

    # Pierwszy slajd
    
  • Po tytule pojawia się treść

Do dyspozycji mamy następujące „typy” zawartości

  1. Zwykły tekst
  2. Lista numerowana
  3. Lista punktowa
  4. Ilustracja „cały slajd”
  5. Zawartość w dwu kolumnach
  6. Wyróżniony blok
  7. Symbole matematyczne i wzory
  8. Tabele

Omówię po kolei

Zwykły tekst

Po prostu tytuł slajdu a pod nim zwykły tekst

# Pierwszy slajd

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sed
vestibulum est. Mauris ut ultricies dolor, a tristique sapien. 
Vivamus non lectus vestibulum, luctus nulla a, fringilla velit.
Praesent vitae justo interdum, efficitur dui sit amet, elementum
lorem. Nullam a diam quam. Sed convallis lobortis justo, at aliquam
turpis sodales suscipit. Nulla at nisl tempus, dictum ex in,
consectetur dui. Integer elementum cursus ultrices.

Nulla sollicitudin ultricies viverra. Proin dapibus at sapien eu
aliquam. Nam eget blandit lacus. Pellentesque ante nunc, fringilla
a dolor ac, viverra tristique diam. Suspendisse placerat ultricies
cursus. Nullam at lobortis lacus. Nam imperdiet mollis ex, nec
elementum diam euismod et. Proin non quam lorem. Nulla gravida justo
nisl, at condimentum libero feugiat id. In et lacus quam. Nunc euismod
fermentum eros, ut laoreet ipsum convallis id. Aenean placerat nulla
sit amet mauris lacinia euismod. Vivamus eu egestas mauris.

Efekt poniżej

Zwykły slajd z tekstem
Zwykły slajd z tekstem

Nie zalecam. Prezentacja to nie książka i słuchaczom opowiadamy i ewentualnie coś pokazujemy nie każąc czytać.

Lista numerowana

W Markdown tworzy się ją w naturalny sposób

# Lista numerowana

1. Pierwszy element
2. Drugi element
3. Trzeci element
4.

Slajd z listą nuemrowaną
Slajd z listą nuemrowaną

Lista punktowana

# Lista punktowana

- Pierwszy element
- Drugi element
- trzeci element
-

Slajd z listą punktowaną
Slajd z listą punktowaną

Podlisty

Można oczywiście listy zagnieżdżać

# Podlisty

1. Pierwszy element numerowany
   - pierwszy element podlisty
   - drugie element podlisty
2. Drugi element numerowany
   1. pierwszy element podlisty
   2. drugi element podlisty
3. Trzeci element

- Pierwszy element punktowany
  1. pierwszy element podlisty
  2. drugi element podlisty
- Drugi element punktowany
  - pierwszy element podlisty
  - drugi element podlisty
- Trzeci…

Listy zagnieżdżone
Listy zagnieżdżone

Listy można zagłębiać bardziej, ale nie więcej niż na cztery poziomy.

Ilustracja na stronie

Włączać można ilustracje w formatach:

  • png
  • pdf
  • jpg

Polecenie Markdown do tego służące wygląda tak:

![](nazwa-pliku.ext)

W zależności od rozmiarów ilustracji albo zostanie ona umieszczona „jak jest” (gdy jej rozmiary są mniejsze od rozmiarów slajdu) albo „magicznie” zmniejszona tak, żeby się mieścić na stronie.

# Mała ilustracja

![](kotek.pdf)

# Duża ilustracja

![](cat.pdf)

Można też ilustracje skalować podając ich rozmiary width i height

# Skalowane ilustracje

![](kotek.pdf){height=2cm}![](cat.pdf){height=2cm}

Szczególnym przypadkiem skalowania jest podanie w nawiasach klamrowych {width=100%} lub {height=100%} wówczas ilustracja zostaie przeskalowana w ten sposób abt zajmować całą przestrzeń na szerokość lub na wysokość jednak mieszcząc się na slajdzie.

Dwie kolumny na slajdzie

Oczywiście kolumn może być więcej…

# Dwie kolumny

:::{.columns}

::::::{.column widtk=50%}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sed
vestibulum est. Mauris ut ultricies dolor, a tristique sapien.
Vivamus non lectus vestibulum, luctus nulla a, fringilla velit.
Praesent vitae justo interdum, efficitur dui sit amet, elementum
lorem. Nullam a diam quam. Sed convallis lobortis justo, at aliquam
turpis sodales suscipit. Nulla at nisl tempus, dictum ex in,
consectetur dui. Integer elementum cursus ultrices.

::::::

::::::{.column width=50%}

![](kotek.pdf){width=100%}

::::::

:::

Zasada jest taka, że zewnętrzny blok oznaczony jako {.columns} wyznaczony jest trzema dwukropkami, a wewnętrzny {.column} sześcioma. Bloki muszą być odpowiednio zamknięte.

Dodatkowy, niezbędny parametr width= definiuje szerokość bloku. Można podawać ją w procentach, dbając aby suma nie przekraczała 100. Można podawać również w centymetrach (albo calach), ale wówczas trudno wszystko ogarnąć.

Można oczywiście mieszać zawartość w kolumnach i zwykłą

Wyróżniony blok

Deklarujemy go jako nagłówek drugiego poziomu. Będzie to tytuł bloku. Następujący tekst będzie jego zawartością

# Wyróżniony blok

Bardzo często aby zamarkować tekst używa się wyrazów na pierwszy rzut
oka przypominających łacinę i, jak się wydaje zupełnie bez sensu.
Jest to jednak cytat z tekstu napisanego przez Cycerona w 45 pne…

## Lorem ipsum

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.

Co zrobić gdy zawartość się nie mieści na jednym slajdzie?

Nie zawsze działa to idealnie, ale można poprosić, aby zawartość była dzielona na kilka slajdów. Definiuje się to dodając do tytułu slajdu informację w postaci {.allowframebreaks}

# Zawarość dłuższa niż jeden slajd {.allowframebreaks}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam
aliquam dapibus volutpat. Duis sed ipsum ac dui posuere tristique
non sit amet ex. Quisque ullamcorper ac nibh id elementum. Aenean
cursus diam ultricies est euismod, id bibendum ex eleifend. Morbi
et nulla at ex lobortis ornare. Donec vel enim malesuada erat commodo
venenatis. Sed tristique ut ligula id molestie. Vestibulum tincidunt
nibh eu velit condimentum blandit. Fusce urna tellus, varius sed
vestibulum sagittis, congue quis enim. Fusce a dolor mi. Praesent
vulputate nisi at nisl auctor, vel interdum augue posuere. In vel
enim quam. Suspendisse pulvinar, augue vel fermentum hendrerit,
neque ante varius tellus, et mattis metus magna eu ligula. Nulla
vestibulum nec turpis non porta. Phasellus mollis et leo ultrices
interdum.

Donec vitae blandit erat. Quisque auctor lectus in metus pretium
sollicitudin. Aenean vel lacinia arcu. Ut venenatis pharetra lorem,
sed ornare lacus euismod quis. In eget fermentum sapien, et laoreet
diam. Praesent ullamcorper ante magna, ut sodales risus tempor ac.
Aenean elementum feugiat tellus vel consequat. Aliquam erat volutpat.
Vivamus fringilla elit et tellus elementum, ac egestas nunc mollis.
Phasellus vestibulum congue ante, vel cursus nulla fringilla at.
Curabitur vulputate orci quis semper tincidunt. Aenean convallis
luctus ante vel semper. Integer nec urna enim. Morbi vestibulum diam
in ligula fermentum volutpat.

Proin volutpat dolor sed nunc dapibus euismod. Maecenas porttitor,
lorem ac pharetra vestibulum, risus enim porta velit, non faucibus
ligula leo non elit. Sed volutpat, neque eget ultrices viverra, diam
libero lacinia est, vitae elementum nisl libero eu ex. Vivamus ut
metus id turpis euismod interdum non eget odio. Integer a libero
purus. Vivamus suscipit, sapien ultrices feugiat faucibus, est nibh
posuere ligula, at aliquam erat risus sit amet dolor. Integer
malesuada, velit at accumsan fringilla, diam dolor pharetra turpis, id
rutrum mauris ex eget nisi. Aliquam congue elit non ipsum scelerisque
facilisis. Nam feugiat enim vel elit vulputate, quis lobortis lacus
ultricies. Nam rhoncus, velit quis vestibulum malesuada, augue ipsum
fringilla magna, quis aliquet mauris libero quis magna. Aenean
sollicitudin lectus vel efficitur hendrerit.

Symbole matematyczne i wzory

Tu tylko i wyłącznie LaTeX. Szybkie tutoriale na moich stronach:

  1. Wzory w LaTeXu
  2. LaTeX: Skomplikowane wzory

Tu tylko mały przykład

# Przykład matematyki

As you know, integration and differentiation is done with
the accuracy of the constants, i.e.

$$\dfrac{d}{dx}\left(f(x) +C\right) = \dfrac{d}{dx} f(x)$$

for any $C$.

And also

$$\displaystyle\int x dt = \dfrac{1}{2}x^2 +C$$

which is easy to check by differentiating the right side for any constant $C$.

**Initial conditions** are used to obtain the value of constatnt $C$.

Tabelki

Generalnie nie polecam — na ogół słuchacze nie maja odpowiedniej ilości czasu podczas prezentacji, aby zawartość przeanalizować.

Ale jak ktoś musi to można tabelkę w Markdown przygotować, choć pewno najlepiej użyć jakiegoś narzędzia, na przykład

  • Tables Generator pozwala zapisać tabelkę w formacie Markdown
  • Jest kilka stron oferujących konwersję csv do Markdown
  • można też znaleźć jakieś skrypty (na przykład w Pythonie) mogące dokonać takiej konwersji.
# Prosta tabelka

| year | make  | model                      | description                       | price   |
| ---- | ----- | -------------------------- | --------------------------------- | ------- |
| 1997 | Ford  | E350                       | ac, abs, moon                     | 3000.00 |
| 1999 | Chevy | Venture «Extended Edition» |                                   | 4900.00 |
| 1996 | Jeep  | Grand Cherokee             | MUST SELL! air, moon roof, loaded | 4799.00 |

Żeby lepiej odróżnić wiersze można dodać na początku pliku źródłowego (w bloku YAML) następujące linie:

classoption: table
header-includes: |
    \rowcolors[]{1}{Logo!20}{Logo!10}    

Polecenia te powodują naprzemienne kolorowanie wierszy tabeli wybranymi kolorami, i wówczas tabelka wyglądać będzie ciut inaczej:

Co dalej z plikiem Markdown?

Mając gotowy plik Markdown (niech nazywa się on prezentacja.md) należy go przetworzyć :

  1. albo do postaci gotowej prezentacji (plik PDF);
  2. albo do postaci kodu LaTeX, który później przetworzymy do postaci PDF.

Do tego potrzebny jest program pandoc.

W pierwszym przypadku polecenie wygląda tak:

pandoc -t beamer prezentacja.md -o prezentacja.pdf

W drugim przypadku

pandoc -s -t beamer prezentacja.md -o prezentacja.tex

W tym drugim przypadku musimy skorzystać z LaTeXa żeby otrzymać wynikowy plik PDF. Opisałem to gdzie indziej.