diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3f459bd..7012f79 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,11 +2,35 @@ name: Build LaTeX document on: [push] jobs: build_latex: + strategy: + matrix: + engine: [pdflatex, lualatex] runs-on: ubuntu-latest steps: - name: Set up Git repository uses: actions/checkout@v2 - - name: Compile LaTeX document - uses: xu-cheng/latex-action@master + - if: ${{ matrix.engine == 'pdflatex' }} + name: Compile LaTeX document + uses: xu-cheng/latex-action@v2 with: - root_file: elteikthesis.tex + root_file: | + elteikthesis.tex + minted-integration.tex + latexmk_shell_escape: true + - if: ${{ matrix.engine == 'lualatex' }} + name: Compile LaTeX document + uses: xu-cheng/latex-action@v2 + with: + root_file: | + elteikthesis.tex + minted-integration.tex + latexmk_shell_escape: true + latexmk_use_lualatex: true + - name: Upload the compiled pdf + uses: actions/upload-artifact@v2.2.4 + with: + name: thesis-${{ matrix.engine }} + path: | + elteikthesis.pdf + minted-integration.pdf + if-no-files-found: error diff --git a/LICENSE b/LICENSE index 5692791..d760da3 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2013-2020 Máté Cserép , Bálint Bognár +Copyright (c) 2013-2021 Máté Cserép , Bálint Bognár Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index fc0e06a..4b8add0 100644 --- a/README.md +++ b/README.md @@ -27,12 +27,17 @@ pdflatex elteikthesis.tex Compilation might be carried out through a preferred IDE (e.g. [TexStudio](https://www.texstudio.org/)), given the same commands should be executed. +## Syntax highlighting of code blocks + +The minted package is also supported for syntax highlighting. For its usage the Python interpreter and the `Pygments` package must be installed as a prerequisite. +See the `elteikthesis-minted.tex` file for example. + ## Required packages (without completeness) **Image handling:** * Minimal and maximal size: [adjustbox](https://ctan.org/pkg/adjustbox) -* Subfigures: [subfigure](https://ctan.org/pkg/subfigure) +* Subfigures: [subcaption](https://ctan.org/pkg/subcaption) * Rotation: [rotating](https://ctan.org/pkg/rotating) **Table management:** @@ -51,8 +56,8 @@ Compilation might be carried out through a preferred IDE (e.g. [TexStudio](https * Mathematical formulas: [amsmath](https://ctan.org/pkg/amsmath) * Mathematical definitions: [amsthm](https://ctan.org/pkg/amsthm) * Mathematical symbols: [amsfonts](https://ctan.org/pkg/amsfonts) -* Algorithms: [algorithmic](https://ctan.org/pkg/algorithms) -* Code blocks: [listingsutf8](https://ctan.org/pkg/listingsutf8) +* Algorithms: [algpseudocode](https://www.ctan.org/pkg/algorithmicx) +* Code blocks: [listingsutf8](https://ctan.org/pkg/listingsutf8), [minted](https://ctan.org/pkg/minted) **Miscellaneous:** diff --git a/README.pdf b/README.pdf index 4392582..0cfeb82 100644 Binary files a/README.pdf and b/README.pdf differ diff --git a/README_hu.md b/README_hu.md index 3e39384..0f9550a 100644 --- a/README_hu.md +++ b/README_hu.md @@ -27,12 +27,17 @@ pdflatex elteikthesis.tex A fordításhoz tetszőleges fejlesztő környezet is használható (pl. [TexStudio](https://www.texstudio.org/)), ugyanezen utasítások kiadásával. +## Kódblokkok szintaxis kiemelése + +A *minted* csomag támogatott a forráskódok szedésére és szintaxis kiemelésére. Használatához szükséges a Python interpreter és a `Pygments` csomag telepítése. +Lásd a `elteikthesis-minted.tex` fájlt példaként. + ## Fontosabb függőségi csomagok **Képkezelés:** * Minimális és maximális méret: [adjustbox](https://ctan.org/pkg/adjustbox) -* Alábrák: [subfigure](https://ctan.org/pkg/subfigure) +* Alábrák: [subcaption](https://ctan.org/pkg/subcaption) * Forgatás: [rotating](https://ctan.org/pkg/rotating) **Táblázatkezelés:** @@ -51,8 +56,8 @@ A fordításhoz tetszőleges fejlesztő környezet is használható (pl. [TexStu * Matematikai formulák: [amsmath](https://ctan.org/pkg/amsmath) * Matematikai definíciók: [amsthm](https://ctan.org/pkg/amsthm) * Matematikai szimbólumok: [amsfonts](https://ctan.org/pkg/amsfonts) -* Algoritmusok: [algorithmic](https://ctan.org/pkg/algorithms) -* Kódblokkok: [listingsutf8](https://ctan.org/pkg/listingsutf8) +* Algoritmusok: [algpseudocode](https://www.ctan.org/pkg/algorithmicx) +* Kódblokkok: [listingsutf8](https://ctan.org/pkg/listingsutf8), [minted](https://ctan.org/pkg/minted) **Egyebek:** diff --git a/README_hu.pdf b/README_hu.pdf index d1f7c5f..dc5029c 100644 Binary files a/README_hu.pdf and b/README_hu.pdf differ diff --git a/chapters/impl.tex b/chapters/impl.tex index aad6f32..7f9e0a8 100644 --- a/chapters/impl.tex +++ b/chapters/impl.tex @@ -95,21 +95,21 @@ Példa forrása: \href{https://www.inf.u-szeged.hu/actacybernetica/}{Acta Cybern \label{alg:ibb} \textbf{\underline{Funct}} IBB($S,f$) \begin{algorithmic}[1] % sorszámok megjelenítése minden n. sor előtt, most n = 1 -\STATE Set the working list ${\cal L}_W$ := $\{S\}$ and the final list ${\cal L}_Q$ := $\{\}$ -\WHILE{( ${\cal L}_W \neq \emptyset$ )} \label{alg:igoend} - \STATE Select an interval $X$ from ${\cal L}_W$ \label{step:selrule}\COMMENT{Selection rule} - \STATE Compute $lbf(X)$ \COMMENT{Bounding rule} - \IF[Elimination rule]{$X$ cannot be eliminated} - \STATE Divide $X$ into $X^j,\ j=1,\dots, p$, subintervals \COMMENT{Division rule} - \FOR{$j=1,\ldots,p$} - \IF[Termination rule]{$X^j$ satisfies the termination criterion} - \STATE Store $X^j$ in ${\cal L}_W$ - \ELSE - \STATE Store $X^j$ in ${\cal L}_W$ - \ENDIF - \ENDFOR - \ENDIF -\ENDWHILE -\STATE \textbf{return} ${\cal L}_Q$ +\State Set the working list ${\cal L}_W$ := $\{S\}$ and the final list ${\cal L}_Q$ := $\{\}$ +\While{( ${\cal L}_W \neq \emptyset$ )} \label{alg:igoend} + \State Select an interval $X$ from ${\cal L}_W$ \label{step:selrule}\Comment{Selection rule} + \State Compute $lbf(X)$ \Comment{Bounding rule} + \If{$X$ cannot be eliminated} \Comment{Elimination rule} + \State Divide $X$ into $X^j,\ j=1,\dots, p$, subintervals \Comment{Division rule} + \For{$j=1,\ldots,p$} + \If{$X^j$ satisfies the termination criterion} \Comment{Termination rule} + \State Store $X^j$ in ${\cal L}_W$ + \Else + \State Store $X^j$ in ${\cal L}_W$ + \EndIf + \EndFor + \EndIf +\EndWhile +\State \textbf{return} ${\cal L}_Q$ \end{algorithmic} \end{algorithm} diff --git a/chapters/user.tex b/chapters/user.tex index 47e302f..f0318a5 100644 --- a/chapters/user.tex +++ b/chapters/user.tex @@ -85,10 +85,10 @@ In non ipsum fermentum urna feugiat rutrum a at odio. Pellentesque habitant morb \begin{figure}[H] \centering - \subfigure[Vestibulum quis mattis urna]{ + \subcaptionbox{Vestibulum quis mattis urna}{ \includegraphics[width=0.45\linewidth]{elte_cimer_szines}} \hspace{5pt} - \subfigure[Donec hendrerit quis dui sit amet venenatis]{ + \subcaptionbox{Donec hendrerit quis dui sit amet venenatis}{ \includegraphics[width=0.45\linewidth]{elte_cimer_szines}} \caption{Aenean porttitor mi volutpat massa gravida} \label{fig:example-2} diff --git a/elteikthesis-minted.pdf b/elteikthesis-minted.pdf new file mode 100644 index 0000000..409b970 Binary files /dev/null and b/elteikthesis-minted.pdf differ diff --git a/elteikthesis-minted.tex b/elteikthesis-minted.tex new file mode 100644 index 0000000..c45a1af --- /dev/null +++ b/elteikthesis-minted.tex @@ -0,0 +1,33 @@ +\documentclass{elteikthesis}[2021/09/20] + +\usepackage[newfloat]{minted} + +\begin{document} +\documentlang{magyar} + +\chapter{Minted forráskód} +\label{ch:chapter} + +\begin{listing}[H] +\begin{minted}{cpp} +#include + +int main() +{ + int c; + std::cout << "Hello World!" << std::endl; + + std::cout << "Press any key to exit." << std::endl; + std::cin >> c; + + return 0; +} +\end{minted} +\caption{Hello World in C++} +\end{listing} + +\phantomsection +\addcontentsline{toc}{chapter}{\lstcodelabel} +\listoflistings + +\end{document} \ No newline at end of file diff --git a/elteikthesis.cls b/elteikthesis.cls index 347404e..bdb6166 100644 --- a/elteikthesis.cls +++ b/elteikthesis.cls @@ -1,7 +1,7 @@ %% MIT License %% -%% Version 2.1, 2020/05/15 -%% Copyright (c) 2013-2020 Máté Cserép , Bálint Bognár +%% Version 2.2, 2021/09/20 +%% Copyright (c) 2013-2021 Máté Cserép , Bálint Bognár %% %% Permission is hereby granted, free of charge, to any person obtaining a copy %% of this software and associated documentation files (the "Software"), to deal @@ -29,7 +29,7 @@ %% to the original package. \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{elteikthesis}[2020/05/15 ELTE FI bachelor and master thesis template] +\ProvidesClass{elteikthesis}[2021/09/20 ELTE FI bachelor and master thesis template] % LaTeX programozói eszközök \RequirePackage{etoolbox} @@ -60,8 +60,13 @@ % ------------------------------ % Karakterkódolás, nyelv -\RequirePackage[utf8]{inputenc} -\RequirePackage[T1]{fontenc} +\RequirePackage{iftex} % XeTex or LuaTex +\iftutex + \RequirePackage{fontspec} +\else % other (PdfTex) + \RequirePackage[utf8]{inputenc} + \RequirePackage[T1]{fontenc} +\fi \RequirePackage[english,magyar]{babel} \RequirePackage{indentfirst} % ------------------------------ @@ -109,6 +114,7 @@ \newcommand{\alglabel}{Algoritmus} \newcommand{\biblabel}{Irodalomjegyzék} + \newcommand{\lstalgorithmlabel}{Algoritmusjegyzék} \newcommand{\lstfigurelabel}{Ábrajegyzék} \newcommand{\lsttablelabel}{Táblázatjegyzék} \newcommand{\lstcodelabel}{Forráskódjegyzék} @@ -132,6 +138,7 @@ \newcommand{\alglabel}{Algorithm} \newcommand{\biblabel}{Bibliography} + \newcommand{\lstalgorithmlabel}{List of Algorithms} \newcommand{\lstfigurelabel}{List of Figures} \newcommand{\lsttablelabel}{List of Tables} \newcommand{\lstcodelabel}{List of Codes} @@ -143,6 +150,13 @@ } % ------------------------------ +% ------------------------------ +% Margók +\RequirePackage[left=35mm, right=25mm, top=25mm, bottom=25mm, headheight=16pt]{geometry} +%\setlength{\textwidth}{150mm} +%\setlength{\textheight}{247mm} +% ------------------------------ + % ------------------------------ % Fejlécek és láblécek \RequirePackage{fancyhdr} @@ -201,7 +215,7 @@ % Maximális ill. minimális méret megadása ábráknak \RequirePackage[export]{adjustbox} % Több ábra egy figure-on belül -\RequirePackage[center]{subfigure} +\RequirePackage{subcaption} % Ábrák forgatása \RequirePackage{rotating} @@ -221,13 +235,6 @@ \paperheight 297mm % ------------------------------ -% ------------------------------ -% Margók -\RequirePackage[left=35mm, right=25mm, top=25mm, bottom=25mm]{geometry} -%\setlength{\textwidth}{150mm} -%\setlength{\textheight}{247mm} -% ------------------------------ - % ------------------------------ % Térköz bekezdések közé \iftoggle{parspace}{ @@ -254,7 +261,6 @@ % ------------------------------ % Helyközök és tördelés -\linespread{1.5} % Egyszeres helyköz a mondatok végén \frenchspacing % Szavak jobb margón túlnyúlásának tiltása @@ -263,10 +269,15 @@ \nottoggle{hypenation}{\RequirePackage[none]{hyphenat}}{} % Beállítás alternatív módon -%\RequirePackage{setspace} -%\singlespacing % ~1.0 linespread -%\onehalfspacing % ~1.3 linespread -%\doublespacing % ~1.6 linespread +\RequirePackage{setspace} +% According to +% https://tex.stackexchange.com/questions/442030/setting-spaces-with-titlespacing-and-fonts +% this matches the 1.5 linespacing in MS Word +\setstretch{1.427465} + +% Vektorok és mátrixok egyszeres sorközzel +% https://tex.stackexchange.com/questions/568084/problem-with-matrices-using-linespread +\everydisplay=\expandafter{\the\everydisplay\linespread{1}\selectfont} % Azonos sorköz használata láblácben %\RequirePackage{footmisc} @@ -293,8 +304,13 @@ % ------------------------------ % Tételek, definíciók +\theoremstyle{definition} \newtheorem{definition}{\deflabel} + +\theoremstyle{plain} \newtheorem{theorem}{\theolabel} + +\theoremstyle{remark} \newtheorem*{remark}{\remlabel} \newtheorem*{note}{\notelabel} % ------------------------------ @@ -322,7 +338,7 @@ % pdflatex-hez \newcommand{\hyperrefComp}{} -\RequirePackage[pdfborder={0 0 0}, unicode, \hyperrefComp]{hyperref} +\RequirePackage[pdfborder={0 0 0}, unicode, pdfusetitle, \hyperrefComp]{hyperref} \RequirePackage[all]{hypcap} \RequirePackage{url} \RequirePackage{bookmark} @@ -351,6 +367,9 @@ % ------------------------------ % Számozott elemek kezelése \RequirePackage{chngcntr} +% Lábjegyzet folytonos számozása fejezetek között +% Continuous counting of footnotes among chapters +\counterwithout{footnote}{chapter} % Lábjegyzet oldalak közti eltörésének tiltása \interfootnotelinepenalty=10000 % ------------------------------ @@ -381,7 +400,7 @@ % ------------------------------ % Feliratok, tartalomjegyzék, ábrajegyzék, táblázatjegyzék \RequirePackage[justification=centering]{caption} -\RequirePackage[subfigure]{tocloft} +\RequirePackage{tocloft} % ------------------------------ @@ -409,7 +428,7 @@ % ------------------------------ % Algoritmusok és kódblokkok írása \RequirePackage{algorithm} -\RequirePackage{algorithmic} +\RequirePackage{algpseudocode} \RequirePackage{listingsutf8} \lstset{ basicstyle=\footnotesize\ttfamily, @@ -429,17 +448,16 @@ breaklines=true, breakatwhitespace=false, float, - frame=linesc, + frame=lines, captionpos=b } % Forráskód elnevezése \renewcommand{\lstlistingname}{\codelabel} % Forráskódjegyzék elnevezése \renewcommand{\lstlistlistingname}{\lstcodelabel} -% Algoritmus kommentek jobb szélre igazítása -\renewcommand{\algorithmiccomment}[1]{\hfill {\it #1}} % Algoritmus elnevezése -\renewcommand{\ALG@name}{\alglabel} +\floatname{algorithm}{\alglabel} +\renewcommand{\listalgorithmname}{\lstalgorithmlabel} % ------------------------------ % ------------------------------ @@ -534,3 +552,40 @@ \setcounter{page}{1} } % ------------------------------ + +\AtBeginDocument{ + % If the minted package is loaded, then provide a default for the formatting, + % and set the labels for the listings + \@ifpackageloaded{minted}{ + \setminted{ + style=tango, + numbers=left, + stepnumber=1, + firstnumber=1, + numbersep=5pt, + showspaces=false, + showtabs=false, + tabsize=2, + breaklines=true, + frame=lines, + bgcolor=codebackg, + } + \SetupFloatingEnvironment{listing}{ + name=\codelabel, % Forráskód elnevezése + listname=\lstcodelabel, % Forráskódjegyzék elnevezése + } + } + + % Az oldalszámozás a tartalomjegyzékkel kezdődik, de ott nem látható + \let\oldtableofcontents\tableofcontents + \renewcommand{\tableofcontents}{ + \pagenumbering{gobble} + \oldtableofcontents + \cleardoublepage + % Oldalszám mentése és betöltésem mert a \pagenumbering visszállítja + \newcounter{conpageno} + \defcounter{conpageno}{\value{page}} + \pagenumbering{arabic} + \setcounter{page}{\value{conpageno}} + } +} diff --git a/elteikthesis.pdf b/elteikthesis.pdf index 58ec02b..57a5daa 100644 Binary files a/elteikthesis.pdf and b/elteikthesis.pdf differ diff --git a/elteikthesis.tex b/elteikthesis.tex index 162ce58..c72a65a 100644 --- a/elteikthesis.tex +++ b/elteikthesis.tex @@ -3,13 +3,18 @@ %noindent, % Bekezdésének első sora ne legyen behúzva / No indentation of first lines in each paragraph %nohyp, % Szavak sorvégi elválasztásának tiltása / No hyphenation of words %twoside, % Kétoldalas nyomtatás / Double sided format + %draft, % Gyorsabb fordítás ábrák rajzolása nélkül / Quicker draft compilation without rendering images %final, % Teendők elrejtése / Set final to hide todos -]{elteikthesis}[2020/05/15] +]{elteikthesis}[2021/09/20] + +% A minted csomag támogatott a forráskódok szedésére +% The minted package is also supported for source highlighting +%\usepackage[newfloat]{minted} % Dolgozat metaadatai % Document's metadata \title{Dolgozat címe} % cím / title -\date{2020} % védés éve / year of defense +\date{2021} % védés éve / year of defense % Szerző metaadatai % Author's metadata @@ -46,11 +51,7 @@ % Teendők listája (final dokumentumban nincs) % List of todos (not in the final document) -\listoftodos[\todolabel] - -% Dokumentum beállítások -% Some document settings -\input{settings.tex} +%\listoftodos[\todolabel] % Címlap (kötelező) % Title page (mandatory) @@ -84,24 +85,35 @@ % Irodalomjegyzék (kötelező) % Bibliography (mandatory) +\phantomsection \addcontentsline{toc}{chapter}{\biblabel} \printbibliography[title=\biblabel] \cleardoublepage % Ábrajegyzék (opcionális) - 3-5 ábra fölött érdemes % List of figures (optional) - useful over 3-5 figures +\phantomsection \addcontentsline{toc}{chapter}{\lstfigurelabel} \listoffigures \cleardoublepage % Táblázatjegyzék (opcionális) - 3-5 táblázat fölött érdemes % List of tables (optional) - useful over 3-5 tables +\phantomsection \addcontentsline{toc}{chapter}{\lsttablelabel} \listoftables \cleardoublepage +% Algorithmusjegyzék +% List of algorithms +\phantomsection +\addcontentsline{toc}{chapter}{\lstalgorithmlabel} +\listofalgorithms +\cleardoublepage + % Forráskódjegyzék (opcionális) - 3-5 kódpélda fölött érdemes % List of codes (optional) - useful over 3-5 code samples +\phantomsection \addcontentsline{toc}{chapter}{\lstcodelabel} \lstlistoflistings \cleardoublepage diff --git a/settings.tex b/settings.tex deleted file mode 100644 index d2040f9..0000000 --- a/settings.tex +++ /dev/null @@ -1,16 +0,0 @@ -% Lábjegyzet folytonos számozása fejezetek között -% Continuous counting of footnotes among chapters -\counterwithout{footnote}{chapter} - -% Tartalomjegyzék oldalszámozásának rejtése -% Hide page numbering of ToC -\newcounter{conpageno} -\let\oldtableofcontents\tableofcontents -\renewcommand{\tableofcontents}{ - \pagenumbering{gobble} - \oldtableofcontents - \cleardoublepage - \setcounter{conpageno}{\value{page}} - \pagenumbering{arabic} - \setcounter{page}{\value{conpageno}} -}