Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PDF 防拷處理與文件更新 #58

Merged
merged 7 commits into from
Jun 29, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions Chapters/conclusion.tex
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

\chapter{結論} \label{conclusion_and_future}

\section{研究結論}
\section{命令總結}

\subsection*{產生論文}

Expand All @@ -27,7 +27,20 @@ \subsection*{完整清除}
make distclean
\end{lstlisting}

\section{未來展望}
\subsection*{PDF防拷加工}

透過 ghostscript\cite{ghostscript} 為 PDF 提供防拷功能,其指令如下。

\begin{lstlisting}[language=bash]
make pdfprocessing
\end{lstlisting}

此功能依賴 build/main.pdf 作為加工來源,因此當 build/main.pdf 不存在導致無法執行此命令時,請先執行 make all 來產生檔案。

\section{結語}

未來,我們也不知道能持續維護多久,只要有人使用,我們就會盡力維護下去。
目前僅支援 Linux,未來將會盡量朝向支援 Windows,讓更多人能使用此專案。

如果這個專案給您提供了幫助,請給我們 GitHub Repository\cite{github-repo} 一個 Star 讓我們知道。
最後祝福您順利畢業!
189 changes: 189 additions & 0 deletions Chapters/enviornment.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
\chapter{編輯環境} \label{ch_enviornment}

本章描述使用專案時需要環境設定。本章節分為作業系統說明、CLI 以及 Docker。
NKUST-latex-template 編譯環境僅需由 CLI 和 Docker 之中擇一即可。
本專案僅需要基礎的文字編輯器 vi、emase、notepad 等搭配 command line 即可使用,但我們推薦使用 VSCode 進行編輯,能讓您有較舒適的整合性使用體驗。

\section{Windows環境說明}

本節是針對 Windows 使用者的說明,UNIX-like 作業系統使用者請略過本節,直接跳至 CLI 或 Docker 閱讀。

開發時實驗室皆以 Linux 作業系統為基底進行論文編寫,並沒有 Windows 的開發需求,因此本專案僅使用 bash 的命令進行 makefile 的撰寫,這也是沒有支援原生 windows 命令提示字元的原因。
目前在 Windows 下有 Windows subsystem on Linux (WSL)、Git Bash、Cygwin 等 Bash 相容環境可以使用,下面將列舉這些方案並說明本專案在這些環境上已知的事項。

\subsection{Windows subsystem on Linux}

這是由 Microsoft 開發的作業系統相容層,能夠執行原生的 Linux application,本專案 makefile 中使用的指令都可以使用。
CLI 方案的使用者可以選擇將 texlive 安裝在 windows 中或是由 WSL 的 Linux 套件管理員進行安裝即可使用。

2021 年 08 月 31 日,Docker 更改了 Docker Desktop 的使用規則,超過 250 人的單位需要支付費用,但教育版本及私人使用維持免費授權。
目前這個專案只需使用 Docker Engine 與 CLI,沒有 Desktop GUI 依然能正常使用。
因此如果您為在學學生,但住宿區域的網域必需迴避此規定時,請在 WSL2 的 Linux 上安裝 Docker 即可,並由 WSL2 執行 Docker 撰寫論文。

\subsection{Git Bash}

CLI 方案理論上可遷移至 Git Bash 上執行,但 Windows 需安裝 TexLive 工具鏈。
Docker 方案使用者應可直接使用,但與 CLI 方案相同需先在 Windows 中安裝 Docker。此環境我們沒有進行過相關測試,效率與執行時期會發生的情況未知,趕時間的話不建議使用。

\subsection{Cygwin}

此功能未經過驗證,使用者必須自行安裝各式各樣的相依套件,不建議使用。

\section{CLI}

CLI 操作環境依賴 bash 等 UNIX-like 的環境,僅需要安裝 TexLive 與 Make 即可使用使用基礎的文字編輯器與 command line 編寫論文。

\section{Docker}

本節紀錄使用 Docker 快速佈署論文編譯環境的操作流程。在閱讀前請先注意以下注意事項。

\begin{itemize}
\item 本專案的論文主體請存放於 host\footnote{附註:Host 系統指的是您 Docker 安裝的基底系統,正常情況下是 Windows、Linux 或是 MacOS,如果 Docker 是安裝於 WSL2 中,這個 Host 指的是 WSL2。} 系統中,Docker image 啟動時會自動將您的論文目錄掛載到 container 中。
\item 當 container 被關閉時,除論文目錄以外的 container 的資料都會被抹除。如要有須保留 container 資料請在 \emph{docker run} 的啟動參數中移除 $--$rm 即可。
\end{itemize}

Docker 安裝請參閱官方文件。

\begin{itemize}
\item Windows\cite{win_docker}
\item Linux\cite{linux_docker}
\item MacOS\cite{mac_docker}
\end{itemize}

\newpage

\subsection{Bash}

本節適用於 Docker 安裝於 Linux、MacOS、WSL 中的使用者。

編譯 docker image,客制化使用者開發環境參數,基底源自 texlive\cite{docker_texlive}。
\begin{lstlisting}[language=bash]
$ ./Docker/linux/build
\end{lstlisting}

啟動 latex-srv,使用腳本會運作於背景中。
\begin{lstlisting}[language=bash]
$ ./Docker/linux/start
\end{lstlisting}

如須進入到環境的 \emph{bash} 中,可以透過 attach 進入環境。如果要離開環境請用 \emph{Ctrl-P} + \emph{Ctrl-Q},如使用 exit 將會關閉該 container。
\begin{lstlisting}[language=bash]
$ ./Docker/linux/attach
\end{lstlisting}

關閉 latex-srv,關閉運作於背景的 container。除了這個指令可以關閉 container 外,也可以在 container 中執行 exit 來關閉 container。
\begin{lstlisting}[language=bash]
$ ./Docker/linux/stop
\end{lstlisting}

\newpage

\subsection{CMD / PowerShell}

本節適用於已於 Windows 中安裝 Docker Desktop 的使用者。

編譯 docker image,客制化使用者開發環境參數,基底源自 texlive\cite{docker_texlive},可使用滑鼠雙擊 \emph{build.bat} 或使用 \emph{cmd} / \emph{powershell} 執行。
\begin{lstlisting}[language=bash]
> ./Docker/windows/build.bat
\end{lstlisting}

啟動 latex-srv,使用腳本會運作於背景中,可使用滑鼠雙擊 \emph{build.bat} 或使用 cmd / powershell 執行。
\begin{lstlisting}[language=bash]
> ./Docker/windows/start.bat
\end{lstlisting}

如須進入到環境的 \emph{bash} 中,可以透過 attach 進入環境。如果要離開環境請用 \emph{Ctrl-P} + \emph{Ctrl-Q},如使用 exit 將會關閉該 container,可使用滑鼠雙擊 build.bat 或使用 cmd / powershell 執行。
\begin{lstlisting}[language=bash]
> ./Docker/windows/attach.bat
\end{lstlisting}

關閉 latex-srv,關閉運作於背景的 container,可使用滑鼠雙擊 \emph{build.bat} 或使用 \emph{cmd} / \emph{powershell} 執行。
\begin{lstlisting}[language=bash]
> ./Docker/windows/stop.bat
\end{lstlisting}

\newpage

\subsection{Docker 方案中使用 VSCode 編輯}

透過 vscode remote extension 進行連線操作,支援 Docker 目錄中所有工具。

\subsubsection*{步驟一}
編譯 image,可雙擊檔案或以 terminal 於專案目錄中執行編譯指令,在此之前請安裝完 docker。如果發生 Image 中已有與您相同名稱使用者,請直接修改 build 來指定 USER / USERID 等資訊。務必注意,修改使用者資訊意味著您在非 docker 的環境中時,檔案會有操作權限的問題。

\begin{flushleft}
\textbf{Linux、MacOS、WSL}
\end{flushleft}

\begin{lstlisting}[language=bash]
$ ./Docker/linux/build
\end{lstlisting}

\begin{flushleft}
\textbf{Windows}
\end{flushleft}

\begin{lstlisting}[language=bash]
> ./Docker/windows/build.bat
\end{lstlisting}

\subsubsection*{步驟二}

安裝 remote extension,如圖\ref{fig_vscode_remote_extension}。

\begin{figure}[H]
\centering
\includegraphics[width=0.8\textwidth]{./Figures/Env/docker/vscode_remote_extension.png}
\caption{安裝 remote extension}
\label{fig_vscode_remote_extension}
\end{figure}

\subsubsection*{步驟三}

啟動 container 進行服務可雙擊檔案或以 terminal 於專案目錄中執行啟動指令。如果正常運作執行後終端機將會自動關閉。

\begin{flushleft}
\textbf{Linux、MacOS、WSL}
\end{flushleft}

\begin{lstlisting}[language=bash]
$ ./Docker/linux/start
\end{lstlisting}

\begin{flushleft}
\textbf{Windows}
\end{flushleft}

\begin{lstlisting}[language=bash]
> ./Docker/windows/start.bat
\end{lstlisting}

\subsubsection*{步驟四}

Ctrl-P 呼叫命令工具,找到(可直接輸入) \emph{> Remote-Container: Attach to Running container ...},如圖\ref{fig_vscode_select_container},點擊後選擇 latex-srv 即可進入開發環境,如圖\ref{fig_vscode_attach_container}。

\begin{figure}[H]
\centering
\subfigure{
\includegraphics[width=0.8\textwidth]{./Figures/Env/docker/vscode_select_container.png}
\label{fig_vscode_select_container}
}
\quad
\centering
\subfigure{
\includegraphics[width=0.8\textwidth]{./Figures/Env/docker/vscode_attach_container.png}
\label{fig_vscode_attach_container}
}
\caption{Attach to Running container}
\end{figure}

\subsubsection*{步驟五}

開啟資料夾,論文目錄預設掛載在 \emph{/home/<username>/thesis} 中,如圖\ref{fig_vscode_finish}。

\begin{figure}[H]
\centering
\includegraphics[width=0.8\textwidth]{./Figures/Env/docker/vscode_finish.png}
\caption{完成開啟 Container 中的論文目錄}
\label{fig_vscode_finish}
\end{figure}
5 changes: 3 additions & 2 deletions Chapters/how_to_start.tex
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
\chapter{如何開始撰寫自己的論文內容} \label{ch_how2start}

相信目前的文件數量仍然會讓您在評估上仍許多疑惑
相信目前的文件數量會讓您在評估上有許多疑惑
為了避免讓您在撰寫論文時遇到許多的小問題,本章將會一步步帶著您將本專案修改為您自己的論文。

\section{架構簡介}

本專案所有的設定都盡可能的模組化,讓每個目錄、檔案的操作內容皆能專注在特定的事務上。在開始之前先一一介紹本專案的架構
本專案所有的設定都盡可能的模組化,讓每個目錄、檔案的操作內容皆能專注在特定的事務上。在開始之前先介紹本專案的架構

\begin{itemize}
\item Chapter - 論文各章節文件
\item Configurations - 論文設定
\item Docker - Docker 環境設定與執行檔
\item Docs - 專案參考文件
\item Externals - 外部匯入文件
\item Figures - 圖片
Expand Down
10 changes: 5 additions & 5 deletions Chapters/introduction.tex
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ \chapter{緒論}\label{introduction}

\section{前言}\label{preface}

NKUST LaTeX 論文版型提供給本校研究生撰寫論文。當您使用這個專案,表示您已經進入碩士生涯的最後階段,祝福您也恭喜您即將完成碩士學業。我們希望這個專案能在論文撰寫的路上給您提供助力
NKUST LaTeX 論文版型提供給本校研究生撰寫論文。當您使用這個專案,表示您已經進入碩士生涯的最後階段,祝福您也恭喜您即將完成碩士學業。希望這個專案能在碩士生涯的尾聲助你一臂之力

本專案所使用的工具皆為 open source 軟體,可放心地由網路上自由下載合法的免費使用,文件編譯工具皆採用 TUG(TEX Users Group) 提供的 TexLive 套件包,編輯器使用 Microsoft 的 VSCode,並以 GNU Bash 環境作為開發的基礎。

Expand All @@ -15,12 +15,12 @@ \section{研究動機}\label{motive}
好玩。


\newpage

\section{論文架構}\label{thesis_arch}
\n 本論文編排方式如下:

第\ref{introduction}章 緒論
第\ref{introduction}章 緒論

第\ref{ch_enviornment}章 編輯環境

第\ref{ch_tmp_config}章 版型設定

Expand All @@ -30,6 +30,6 @@ \section{論文架構}\label{thesis_arch}

第\ref{algorithm}章 演算法虛擬碼範例

第\ref{Experimental_picture}章 模擬實驗與結果分析
第\ref{Experimental_picture}章 圖表與圖片

第\ref{conclusion_and_future}章 結論
8 changes: 5 additions & 3 deletions Chapters/template_config.tex
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
\chapter{版型設定} \label{ch_tmp_config}

本章包含論文資訊、論文Logo、封面、相關文件引入以及版型微調等。
用於此版型的 config.tex 以及 Configurations 中的 tex 檔案。
本章內容包含論文資訊、論文Logo、封面、相關文件引入以及版型微調等。
章節內使用到的檔案有 config.tex、thesisinfo.tex 以及 Configurations 中的 tex 檔案。

\section{論文資訊}

論文資訊主要和論文作者、指導教授、學校等不變的訊息,其設定位於 config.tex 中。
論文作者、指導教授、學校等不變的訊息,其設定位於 thesisinfo.tex 中。
設定中如有碰到 zhtw、tw 或 en 表示這個項目有區分中英文的。

\begin{lstlisting}[language=TeX]
Expand All @@ -20,6 +20,8 @@ \section{論文資訊}
\def\schoolenoldname{National Kaohsiung University of Applied Sciences}
\end{lstlisting}

此欄位在未來如果被取消,請發個 Issue 通知我們,謝謝!

\section{初稿與正式版}

給予口試委員的論文為初稿。因此需要封面加入初稿字樣,可透過 config.tex 進行設定。
Expand Down
1 change: 1 addition & 0 deletions Configurations/chapter.tex
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

% ----- Chapter ----
\input{Chapters/introduction.tex}
\input{Chapters/enviornment.tex}
\input{Chapters/template_config.tex}
\input{Chapters/how_to_start.tex}
\input{Chapters/latex_example.tex}
Expand Down
11 changes: 10 additions & 1 deletion Configurations/template.tex
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,13 @@
pdfstartview={FitV},
unicode,
breaklinks=true,
}
pdfcreator={NKUST LaTeX Template Groups},
pdfproducer={NKUST LaTeX template build on XeLaTeX},
pdftitle={\titletw\ \titleen}, % 文件標題
pdfsubject={\authorenname, \degreeen\ thesis - \titleen}, % 文件主旨
pdfauthor={\authorenname \ \authortwname}, % 擁有者
pdfkeywords={\thesiskeywords}, % 關鍵字
}

\pdfstringdefDisableCommands{ % If there is an explicit linebreak in a section heading (or anything printed to the pdf-bookmarks), it is replaced by a space
\let\\\space
Expand Down Expand Up @@ -218,6 +224,9 @@
% if-else 擴充
\usepackage{ifthen}

% variable checked
\usepackage{etoolbox}

% ----------------------------
% 其他定義
% ----------------------------
Expand Down
8 changes: 6 additions & 2 deletions Docs/build.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,11 @@ $ make clean
$ make distclean
```

### 編譯錯誤問題
### 檔案防拷處理

由於我們使用了一部分在作業系統中可能不會預設的字體,因此可能導致編譯過程中發生錯誤。此問題請閱讀 config 相關的設定指引。
防拷處理指令如下,另外請注意執行此命令時 `main.pdf` 必須存在。

```
$ make pdfprocessing
```

36 changes: 16 additions & 20 deletions Docs/config.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,8 @@
## NKUST Thesis LaTeX 設定

此版型分為文件格式與使用者資訊二大部分,文件格式皆存放於**Configurations/**中,
使用者資訊皆定義於**config.tex**中。
此版型分為文件格式與使用者資訊二大部分,文件格式皆存放於**Configurations/**中,文件區塊載入設定定義於**config.tex**中。

文件格式用於 PDF 格式樣式以及系統中的套件引入等,其主要設定存放於**Configurations**中,包含了文章中引入的章節、附錄以及版型的設定,而版型設定中的格式等套件設定皆存放於**Templates**中,
當前套件包提供了中英文摘要、誌謝、章節、參考文獻及文件邊界等定義功能。

### 設定作者資訊

作者資訊為本論文中的作者、指導教授、學校、科系、論文題目等相關資料,其設定欄位位於 `config.tex` 中。
在板型設定中,比較特殊的部份是國立高雄科技大學於2018年2月1日由國立高雄應用科技大學、國立高雄第一科技大學、國立高雄海洋大學三所科技大學合併而成,在規範提供之書名頁範本加註合併之學校英文名稱,因此本論文中提供此設定。
文件格式用於 PDF 格式樣式以及系統中的套件引入等,其主要設定存放於**Configurations**中,包含了文章中引入的章節、附錄以及版型的設定,而版型設定中的格式等套件設定皆存放於**Templates**中,當前套件包提供了中英文摘要、誌謝、章節、參考文獻及文件邊界等定義功能。

### 文件內容設定

Expand All @@ -22,17 +15,7 @@

### 字體調整

此版型中之中文字體使用教育部發布之楷體、宋體、隸書等中文字型以及 "TeX Gyre Termes"、"DejaVu Sans Mono"、"EB Garamond" 等英文字體。如果您想使用其他系統中已有的字體請於 template.tex 中修改字體設定。

請注意,如果您使用了系統不存在的字體,在編譯過程中會因缺乏字體而導致編譯錯誤,因此我們建議您先透過指令查詢系統中是否存在字體。

```
$ fc-list | grep <font-name>
```

上述指令請自行更換為要查詢的字體名稱,如您需要安裝字體可請系統管理員為您提供協助或是自行將字體安裝於家目錄中的 `~/.local/share/fonts/` 位置中。

自行安裝字體指令流程首先為取得字體,後將字體安裝至特定的位置中。
論文字體再過去曾經有多次政策上的修改,在 2.0 版本時因應使用者的要求將字體加回至專案中,目前此版型的論文使用的字體為 `DejaVuSerif` 與 `eduki` 如您需要新增字體請至 `template.tex` 中修改字體設定。

### 邊界調整

Expand All @@ -42,3 +25,16 @@ $ fc-list | grep <font-name>

當使用膠裝時,輸出封面時若使用上述之**內容**時,會導致封面輸出時偏離封面中心的問題,此問題可以透過額外的指令產生無偏移之封面,該指令請見編譯篇。

### PDF 文件資訊

文件資訊相關設定位於 `Configuration/template.tex` 中,支援 PDF 文件標題、文件主旨、擁有者、關鍵字等功能。
詳細設定可參考套件 hyperref 的 `\hypersetup` 命令。

```
pdftitle={\titletw\ \titleen}, % 文件標題
pdfsubject={\authorenname, \degreeen\ thesis - \titleen}, % 文件主旨
pdfauthor={\authorenname \ \authortwname}, % 擁有者
pdfkeywords={\thesiskeywords}, % 關鍵字
```

附註: 關鍵字的設定沒有與摘要的關鍵字進行連結。
Loading