Latex – spis treści z linkami do zawartości

Tak jak w tytule pokażę, jak utworzyć spis treści/menu składające się z głównych sekcji, podsekcji i podpodsekcji zawierające linki do zawartości tych (pod)sekcji.
Poniżej listing kodu latex-a (z komentarzami):

%typ dokumentu, rozmiar czcionki
\documentclass[11pt,a4paper]{article}

%język i kodowanie
\usepackage{polski}
\usepackage[utf8]{inputenc}

%stworzenie linków w menu (niewidocznych)
\usepackage[hidelinks]{hyperref}

%autor, dzisiejsza data i tytuł dokumentu
\author{Training Universe}
\date{\today}
\title{Spis treści z linkami do zawartości}

%początek dokumentu
\begin{document}
%wyświetlenie tytułu
\maketitle

%przejście do nowej strony
\newpage
%spis zawartości
\tableofcontents
\newpage


%sekcja 1 i jej etykieta
\section{Sekcja 1}
\label{sec:Sekcja 1}

%odpowiednio podsekcja sekcji 1
\subsection{Sekcja 1.1}
\label{subsec:Sekcja 1.1}

%podpodsekcja sekcji 1
\subsubsection{Sekcja 1.1.1}
\label{subsubsec:Sekcja 1.1.1}

%przykładowy tekst
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec commodo mauris vitae ligula mollis, vitae malesuada sem ultrices. Vivamus tristique dapibus lorem sed ultrices. Phasellus eu elit luctus, vulputate leo ut, tincidunt mauris. Sed sed tellus auctor, aliquam sem id, pulvinar lectus. Fusce fermentum nisi eu elit sagittis aliquam. Praesent et justo in mi vulputate pharetra. Nunc id massa a mauris lobortis efficitur. Quisque commodo, lacus a consectetur feugiat, orci sapien luctus turpis, ut finibus dui quam ut magna.

Maecenas efficitur, lacus eget luctus ultrices, lectus ipsum gravida mauris, vitae volutpat justo urna id urna. Sed nec ex feugiat, consequat libero in, commodo nunc. Curabitur dictum, eros sit amet scelerisque luctus, neque enim dignissim tortor, a scelerisque erat nisi sed mauris. Vestibulum efficitur aliquam mauris, sed malesuada risus aliquet sit amet. Morbi at mauris in sapien hendrerit aliquet a non ante. Mauris at fringilla dui. Etiam sollicitudin ipsum ut nisl congue, eget suscipit mi sagittis. Sed aliquet risus non justo vestibulum, eu varius lacus dapibus. Integer et pellentesque sapien.

Vestibulum id faucibus eros, vitae facilisis est. Ut ut ligula sit amet odio aliquam viverra sed vitae ex. Maecenas lobortis interdum elit, ac condimentum ipsum faucibus in. In hac habitasse platea dictumst. Nunc non enim sed tellus tincidunt suscipit vitae et nulla. Cras tincidunt erat id mi tincidunt, eu euismod orci venenatis. Etiam sit amet vulputate nunc. Nulla id lectus vitae justo finibus volutpat. Aenean consequat sapien a arcu interdum luctus.

Sed malesuada ligula ut massa elementum, sit amet consectetur mi vestibulum. Mauris fermentum laoreet dui sed iaculis. Morbi luctus libero ac sem varius ultrices. Donec interdum auctor nulla, ac bibendum enim feugiat nec. Sed id aliquam ex, et commodo lectus. Curabitur elementum, enim vel congue auctor, purus massa commodo erat, nec scelerisque risus dui vitae sapien. Nulla facilisi. Sed id felis tempor, venenatis justo nec, viverra mi. Nunc sollicitudin, lacus in pulvinar finibus, nunc ligula viverra nisl, et dictum orci felis eu nunc. Quisque sed massa sit amet purus venenatis dignissim.

Praesent ac aliquam leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam eget iaculis enim. Duis varius lectus sed eleifend fringilla. Nullam viverra est sed tristique hendrerit. Suspendisse pellentesque, enim id mattis aliquam, elit orci elementum nulla, sed interdum elit neque id felis. Integer consectetur, ex a porttitor egestas, tortor sem pharetra neque, nec efficitur turpis urna a tellus. Donec pulvinar, erat at rhoncus dictum, sem purus volutpat velit, id fermentum felis tortor eu ligula. Sed in ante nibh. Fusce eleifend dapibus lectus. Sed non enim id enim ultricies elementum. Sed convallis bibendum erat vitae vulputate.

\newpage


\subsubsection{Sekcja 1.1.2}
\label{subsubsec:Sekcja 1.1.2}

\newpage

\subsubsection{Sekcja 1.1.3}
\label{subsubsec:Sekcja 1.1.3}

\newpage

\section{Sekcja 2}
\label{sec:Sekcja 2}

\subsection{Sekcja 2.1}
\label{subsec:Sekcja 2.1}

\newpage

\subsection{Sekcja 2.2}
\label{subsec:Sekcja 2.2}

%koniec dokumentu
\end{document}

Ogółem wszystko sprowadza się do użycia paczki do linków, wyświetlenia tabeli zawartości i utworzenia odpowiednich sekcji dokumentu.

Poniżej link do wygenerowanego dokumentu w postaci pdf:
https://traininguniverse.net/wp-content/uploads/2023/07/menu-content.pdf

Proste poziome menu nawigacyjne z pionowym rozwijanym w HTML i CSS

Przedstawię mniej więcej jak utworzyć menu i podmenu, które powinno wyglądać tak jak poniżej:

Menu

 

 

 

 



Składać się będą na to dwa pliki “index.html” i “style.css”.
Dokładniejszy opis wykonania będzie umieszczony w plikach źródłowych.

<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Menu</title>
<!--zewnętrzny arkusz stylów-->
<link rel="stylesheet" href="styles/style.css">
</head>
<body>
<header>
<nav>
<ul>
<li><a href="#home">Home</a></li>
<li class="dropdown">
<!--to bedzie rozwijana do dołu lista-->
<a href="javascript:void(0)" class="dropbtn">News</a>
<!--po wybraniu nic sie nie dzieje-->
<div class="dropdown-content">
<!--zagnieżdżona lista rozwijana w dół-->
<a href="#news1">News 1</a>
<a href="#news2">News 2</a>
<a href="#news3">News 3</a>
</div>
</li>
<li><a href="#contact">Contact</a></li>

</ul>
</nav>
</header>
</body>
</html>

 

 

 

/*jako że są to kaskadowe arkusze stylów, to kolejno od góry do dołu są dokonywane kolejne zmiany i też jak zajdzie potrzeba nadpisywane*/
ul {
    list-style-type: none; /*wyłączenie punktowania elementów listy*/
    margin: 0; /*zerowy margines naokoło listy*/
    padding: 0; /*otoczenie wewnętrzne*/
    overflow: hidden; /*ukrycie nadmiarowego rozmiaru listy*/
    background-color: #333;
}

li {
    float: left; /*ustawienie elementów listy tak by "pływały" w lewym kierunku*/
}

li a, .dropbtn {/*znak spacji w css oznacza następujące (niekoniecznie kolejno) po sobie elementy, natomiast przecinek oznacza tylko, że ".dropbtn" jest kolejnym elementem do takiego samego ostylowania*/
    display: block; /*wyświetlanie jako bloku*/
    color: white;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none; /*wyłączenie podkreślenia w linkach*/
}

li a:hover, .dropdown:hover .dropbtn {/*":hover", czyli co będzie się działo po najechaniu na podstawowe menu*/
    background-color: #04AA6D;
}
li.dropdown {
    display: block;
}
.dropdown-content {
    display: none; /*pierwotne ukrycie menu rozwijanego w dół*/
    position: absolute; /*tak jakby usunięte jest zajmowane miejsce w dokumencie zajmowane przez element i ustawione do najbliższego pozycyjnego przodka;*/
    background-color: #333;
    min-width: 160px;
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
    z-index: 1; /*określenie pozycji w dokumencie (że menu będzie widoczne nad elementami ciała dokumentu*/
}

.dropdown-content a:hover {
    background-color: #04AA6D; /*kolor po najechaniu na element rozwijany w dół*/
}

.dropdown:hover .dropdown-content {
    display: block;
}

Skrót do ulubionych aplikacji w pasku menu pod Ubuntu

Zainstalowane aplikacje za pomocą Centrum oprogramowania Ubuntu można łatwo dodać poprzez otwarcie Podglądu i wyszukanie odpowiedniej aplikacji lub poprzez wyświetlenie programów, kliknięcie na odpowiednią ikonę aplikacji PPM(prawym przyciskiem myszki) i wybranie dodania do Ulubionych.

Sprawa ma się trochę inaczej, gdy aplikację zainstalowaliśmy ręcznie poprzez komendę apt-get install lub ściągając odpowiedni pakiet zewnętrznie.
W takim przypadku, tworzymy odpowiedni plik skrótowy do aplikacji.
Przykładowy kod w skrócie z rozszerzeniem plik.desktop może wyglądać, m.in. następująco:

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/path/to/application
Name=App name
Comment=Some comment
Icon=/path/to/icon

Nie zapominajmy o dodaniu praw dostępu do uruchamiania, chmod +x app.desktop. I gdy tworzymy plik na pulpicie systemowym możemy zezwolić na uruchamianie, poprzez co, mamy od razu skrót do aplikacji dostępny również na pulpicie.
Po zakończonej edycji pliku kopiujemy go do lokalizacji /usr/share/applications.
Oczywiście potrzebujemy do przekopiowania praw root-a.
Możemy wówczas otworzyć powyższą lokalizację w terminalu i wpisać odpowiednią komendę: sudo cp /home/user-name/Pulpit/app-name.desktop ./.

W ten sposób mamy dodany skrót do widocznych aplikacji w menu.
Teraz wystarczy wyświetlić lub wyszukać program kliknąć PPM i wybrać dodanie do ulubionych, a ikona aplikacji pojawi się w pasku menu. (pamiętajmy zawsze, że linux rozpoznaje wielkość liter, co ma duże znaczenie, bo możemy nie znaleźć naszego skrótu aplikacji).