From 5f0442a630cd2a34369caae0b54046055032fe8b Mon Sep 17 00:00:00 2001 From: KaiserY Date: Sat, 19 Feb 2022 17:08:39 +0800 Subject: [PATCH] wip add pdf output --- .github/workflows/main.yml | 28 +++++ book.toml | 6 +- custom-template.tex | 216 ------------------------------------- 3 files changed, 33 insertions(+), 217 deletions(-) delete mode 100644 custom-template.tex diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d82f500..454420b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,6 +27,34 @@ jobs: mkdir bin curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=bin echo "$(pwd)/bin" >> ${GITHUB_PATH} + - name: Install mdbook-latex-pdf + run: | + mkdir bin + curl -sL -o bin/mdbook-latex-pdf https://github.com/KaiserY/mdbook-latex-pdf/releases/download/0.1.0/mdbook-latex-pdf-x86_64-unknown-linux-gnu + chmod +x bin/mdbook-latex-pdf + echo "$(pwd)/bin" >> ${GITHUB_PATH} + pip install Pygments + - name: Install font + run: | + mkdir fonts + mkdir -p ~/.local/share/fonts + curl -sL -o Noto_Sans.zip https://fonts.google.com/download?family=Noto%20Sans + unzip Noto_Sans.zip -d fonts/Noto_Sans + curl -sL -o Noto_Sans_SC.zip https://fonts.google.com/download?family=Noto%20Sans%20SC + unzip Noto_Sans_SC.zip -d fonts/Noto_Sans_SC + curl -sL -o Noto_Sans_Mono.zip https://fonts.google.com/download?family=Noto%20Sans%20Mono + unzip Noto_Sans_Mono.zip -d fonts/Noto_Sans_Mono + curl -sL -o Noto_Sans_KR.zip https://fonts.google.com/download?family=Noto%20Sans%20KR + unzip Noto_Sans_KR.zip -d fonts/Noto_Sans_KR + curl -sL -o Noto_Sans_Thai.zip https://fonts.google.com/download?family=Noto%20Sans%20Thai + unzip Noto_Sans_Thai.zip -d fonts/Noto_Sans_Thai + curl -sL -o Noto_Sans_Arabic.zip https://fonts.google.com/download?family=Noto%20Sans%20Arabic + unzip Noto_Sans_Arabic.zip -d fonts/Noto_Sans_Arabic + curl -sL -o Noto_Sans_Hebrew.zip https://fonts.google.com/download?family=Noto%20Sans%20Hebrew + unzip Noto_Sans_Hebrew.zip -d fonts/Noto_Sans_Hebrew + curl -sL -o Noto_Sans_Devanagari.zip https://fonts.google.com/download?family=Noto%20Sans%20Devanagari + unzip Noto_Sans_Devanagari.zip -d fonts/Noto_Sans_Devanagari + fc-cache -rv - name: Report versions run: | rustup --version diff --git a/book.toml b/book.toml index a386fc4..6c484e5 100644 --- a/book.toml +++ b/book.toml @@ -1,8 +1,12 @@ [book] title = "Rust 程序设计语言 简体中文版" -author = "Steve Klabnik 和 Carol Nichols,以及来自 Rust 社区的贡献(Rust 中文社区翻译)" +authors = ["Steve Klabnik 和 Carol Nichols,以及来自 Rust 社区的贡献(Rust 中文社区翻译)"] description = "Rust 程序设计语言 简体中文版" [output.html] additional-css = ["ferris.css", "theme/2018-edition.css"] additional-js = ["ferris.js"] + +[output.latex-pdf] +latex = false +pdf = true diff --git a/custom-template.tex b/custom-template.tex deleted file mode 100644 index 210b168..0000000 --- a/custom-template.tex +++ /dev/null @@ -1,216 +0,0 @@ -%% Packages and Settings -\UseRawInputEncoding -\documentclass{article} -\usepackage[english]{babel} -\usepackage{adjustbox} -\usepackage{colortbl} -\usepackage[T1]{fontenc} -\usepackage[margin=1in]{geometry} -\usepackage{graphicx} - -\usepackage{fontspec} -\setmainfont[Script=Devanagari]{Courier New} -\setsansfont{DejaVu Sans} -\setmonofont{DejaVu Sans Mono} - -\usepackage{xeCJK} -\setCJKmainfont[BoldFont=SimHei,ItalicFont=KaiTi]{微软雅黑} -\xeCJKsetup{PunctStyle=kaiming,CJKspace=true,CheckSingle=true} - -% https://tex.stackexchange.com/questions/219174/issue-with-page-breaks-before-section-and-toc-hyperlinks?rq=1 -\usepackage{titlesec} -\usepackage{hyperref} -\newcommand{\sectionbreak}{\clearpage} - -\usepackage[utf8]{inputenc} -\usepackage{listings} -\usepackage{longtable} -\usepackage{tabularx} -\usepackage{tabu} -\usepackage{textcomp} -\usepackage{xcolor} -\usepackage{array} - -\newcommand{\PreserveBackslash}[1]{\let\temp=\\#1\let\\=\temp} -\newcolumntype{C}[1]{>{\PreserveBackslash\centering}m{#1}} -\newcolumntype{R}[1]{>{\PreserveBackslash\raggedleft}p{#1}} -\newcolumntype{L}[1]{>{\PreserveBackslash\raggedright}p{#1}} - -% https://tex.stackexchange.com/questions/143015/different-column-number-in-rows -\usepackage{booktabs,multirow,tabularx}% http://ctan.org/pkg/{booktabs,multirow,tabularx} -\newcommand{\makecell}[1]{\begin{tabular}{c}#1\end{tabular}} - -% https://tex.stackexchange.com/questions/823/remove-ugly-borders-around-clickable-cross-references-and-hyperlinks -\hypersetup{ - colorlinks, - linkcolor={red!50!black}, - citecolor={blue!50!black}, - urlcolor={blue!80!black} -} - -%% Unicode rules. -% https://tex.stackexchange.com/questions/215520/output-from-tree-command-in-a-listing -\usepackage{newunicodechar} -\newunicodechar{└}{{\smash{\raisebox{0.5ex}{\rule{0.5pt}{\dimexpr\baselineskip-1.5ex}}}\raisebox{0.5ex}{\rule{1ex}{0.5pt}}}} -\newunicodechar{─}{{\raisebox{0.5ex}{\rule{1.5ex}{0.5pt}}}} -\newunicodechar{├}{{\smash{\raisebox{-1ex}{\rule{0.5pt}{\baselineskip}}}\raisebox{0.5ex}{\rule{1ex}{0.5pt}}}} -\newunicodechar{’}{{'}} -\newunicodechar{“}{{"}} -\newunicodechar{”}{{"}} - -%% Code highlighting. -\definecolor{commentsColor}{rgb}{0.497495, 0.497587, 0.497464} -\definecolor{keywordsColor}{rgb}{0.000000, 0.000000, 0.635294} -\definecolor{stringColor}{rgb}{0.558215, 0.000000, 0.135316} -\lstset{ % - backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor} - basicstyle=\footnotesize\ttfamily, % the size of the fonts that are used for the code - breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace - breaklines=true, % sets automatic line breaking - captionpos=b, % sets the caption-position to bottom - commentstyle=\color{commentsColor}\textit, % comment style - deletekeywords={...}, % if you want to delete keywords from the given language - escapeinside={\%*}{*)}, % if you want to add LaTeX within your code - extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8 - frame=tb, % adds a frame around the code - keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible) - keywordstyle=\color{keywordsColor}\bfseries, % keyword style - language=Python, % the language of the code (can be overrided per snippet) - otherkeywords={*,...}, % if you want to add more keywords to the set - numbers=left, % where to put the line-numbers; possible values are (none, left, right) - numbersep=5pt, % how far the line-numbers are from the code - numberstyle=\tiny\color{commentsColor}, % the style that is used for the line-numbers - rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here)) - showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces' - showstringspaces=false, % underline spaces within strings only - showtabs=false, % show tabs within strings adding particular underscores - stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered - stringstyle=\color{stringColor}, % string literal style - prebreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookrightarrow}}, - tabsize=2, % sets default tabsize to 2 spaces - title=\lstname, % show the filename of files included with \lstinputlisting; also try caption instead of title - columns=fixed, % Using fixed column width (for e.g. nice alignment) - inputencoding=utf8, % https://tex.stackexchange.com/questions/24528/having-problems-with-listings-and-utf-8-can-it-be-fixed - literate={└}{{\smash{\raisebox{0.5ex}{\rule{0.5pt}{\dimexpr\baselineskip-1.5ex}}}\raisebox{0.5ex}{\rule{1ex}{0.5pt}}}}1 {─}{{\raisebox{0.5ex}{\rule{1.5ex}{0.5pt}}}}1 {├}{{\smash{\raisebox{-1ex}{\rule{0.5pt}{\baselineskip}}}\raisebox{0.5ex}{\rule{1ex}{0.5pt}}}}1, -} - -%% Language definitions. -\lstdefinelanguage{rust}{ - keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, - ndkeywords={class, export, boolean, throw, implements, import, this}, - sensitive=false, - comment=[l]{//}, - morecomment=[s]{/*}{*/}, - morestring=[b]', - morestring=[b]" -} - -\lstdefinelanguage{rs}{ - keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, - ndkeywords={class, export, boolean, throw, implements, import, this}, - sensitive=false, - comment=[l]{//}, - morecomment=[s]{/*}{*/}, - morestring=[b]', - morestring=[b]" -} - -\lstdefinelanguage{console}{ - keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, - ndkeywords={class, export, boolean, throw, implements, import, this}, - sensitive=false, - comment=[l]{\#}, - morestring=[b]', - morestring=[b]" -} - -\lstdefinelanguage{handlebars}{ - keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, - ndkeywords={class, export, boolean, throw, implements, import, this}, - sensitive=false, - comment=[l]{//}, - morecomment=[s]{/*}{*/}, - morestring=[b]', - morestring=[b]" -} - -\lstdefinelanguage{shell}{ - keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, - ndkeywords={class, export, boolean, throw, implements, import, this}, - sensitive=false, - comment=[l]{\#}, - morecomment=[s]{/*}{*/}, - morestring=[b]', - morestring=[b]" -} - -\lstdefinelanguage{json}{ - keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, - ndkeywords={class, export, boolean, throw, implements, import, this}, - sensitive=false, - comment=[l]{//}, - morecomment=[s]{/*}{*/}, - morestring=[b]', - morestring=[b]" -} - -\lstdefinelanguage{yaml}{ - keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, - ndkeywords={class, export, boolean, throw, implements, import, this}, - sensitive=false, - comment=[l]{//}, - morecomment=[s]{/*}{*/}, - morestring=[b]', - morestring=[b]" -} - -\lstdefinelanguage{toml}{ - keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, - ndkeywords={class, export, boolean, throw, implements, import, this}, - sensitive=false, - comment=[l]{//}, - morecomment=[s]{/*}{*/}, - morestring=[b]', - morestring=[b]" -} - -\lstdefinelanguage{diff}{ - sensitive=false, - comment=[l]{//}, - morecomment=[s]{/*}{*/}, - morestring=[b]', - morestring=[b]" -} - -\lstdefinelanguage{JavaScript}{ - keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, - ndkeywords={class, export, boolean, throw, implements, import, this}, - sensitive=false, - comment=[l]{//}, - morecomment=[s]{/*}{*/}, - morestring=[b]', - morestring=[b]" -} - -\lstdefinelanguage{text}{} -\lstdefinelanguage{hbs}{} -\lstdefinelanguage{cmd}{} -\lstdefinelanguage{powershell}{} -\lstdefinelanguage{makefile}{} -\lstdefinelanguage{markdown}{} - -%% Title and Author (retreived from book.toml) -\title{} -\author{} -\date{} - -%% Begin document. -\begin{document} -\maketitle -\clearpage -\tableofcontents -\clearpage - -%% mdbook-latex begin - -\end{document} \ No newline at end of file