---
# System prepended metadata

title: NKUST thesis template 操作說明
tags: [NKUST, 碩士]

---

# NKUST thesis template 操作說明
###### tags: `NKUST` `碩士`

本章分為已有環境的操作、Docker、CLI 文件編寫、VSCode 文件編寫。

[![yuhao-kuo - badge-generator](https://img.shields.io/static/v1?label=yuhao-kuo&message=NKUST-thesis-template&color=blue&logo=github)](https://github.com/yuhao-kuo/NKUST-thesis-template) [![forks - badge-generator](https://img.shields.io/github/forks/yuhao-kuo/NKUST-thesis-template?style=social)](https://github.com/yuhao-kuo/NKUST-thesis-template) [![stars - badge-generator](https://img.shields.io/github/stars/yuhao-kuo/NKUST-thesis-template?style=social)](https://github.com/yuhao-kuo/NKUST-thesis-template)

:::info
強烈建議撰寫前先觀看 [文章寫好了卻為排版苦惱？也許你該考慮用 LaTex 完成下一個專業的報告 (使用 Overleaf 雲端編輯器)](https://www.youtube.com/watch?v=mQamBS6uTOc)。
:::

:::success
如果沒有時間架設環境，可以選擇使用 [Overleaf](https://www.overleaf.com/latex/templates/nkust-thesis-overleaf/qwdpqjqnztsp) 環境。
:::

## 已有環境

### CLI
直接透過 CLI 執行編譯指令。

```
$ make all               # 編譯文件
$ make clean             # 清除暫存檔
$ make distclean         # 完整清除編譯產生的檔案
```

### VSCode 連線遠端伺服器

1. 安裝 remote extension
2. 連線遠端伺服器
    * 詳細教學請見文件 [SSH keygen+VSCODE](https://hackmd.io/aHHs9hAeSDKHnaLV-oHbhQ)。
4. 透過 latex extension 進行自動編譯或使用 CLI 進行操作。
    * VSCode 的自動編譯設定，請見 [setting.json](https://github.com/yuhao-kuo/NKUST-thesis-template/blob/master/.vscode/settings.json)。
    * CLI 操作請見**已有環境**小節。

## Docker

佈署編譯環境到伺服器經常是 linux 新手網管的惡夢，在加上希望支援 windows 系統的目標，因此決定加入 docker 的支援。

安裝部份請見 docker 文件。

### iamge 編譯
:::success

編譯後 image 為 4.32GB。

編譯時間約485秒
CPU: Intel i5-1035G1 4核8緒
Memory: 16GB
DISK: SSD
:::

專案中內建 docker image 編譯腳本，可直接雙擊檔案執行或以指令進行。

1. 編譯
```
### Linux / Mac
$ ./Docker/linux/build

### Windows PowerShell / cmd
> Docker\windows\build.bat
```
3. 開啟
```
### Linux / Mac
$ ./Docker/linux/start

### Windows PowerShell / cmd
> Docker\windows\start.bat
```
5. 關閉，可透過腳本或接管 Container 進行關閉。

使用腳本
```
### Linux / Mac
$ ./Docker/linux/stop

### Windows PowerShell / cmd
> Docker\windows\stop.bat
```
接管 Container
```bash
### Linux / Mac
$ ./Docker/linux/attach

### Windows PowerShell / cmd
> Docker\windows\attach.bat
```
在 Container 中關閉
```
$ exit
```
如接管後不想關閉機器可按 `ctrl+P` + `ctrl+Q` 退出 Container。

### 運作架構

使 container 運作於背景中，開機時會把 host 中的 NKUST-thesis-template 掛載到 Container 上。
利用 vscode remote development extension 進行遠端編輯，與編譯。

## CLI

本節主要提供給使用非 VSCode 的使用者。

1. 啟動 Docker 與進入容器
    ```
    $ ./Docker/linux/start   # 啟動容器
    $ ./Docker/linux/attach  # 從 Host 端進入容器
    ```
3. 編譯與清除
    ```
    $ make all               # 編譯文件
    $ make clean             # 清除暫存檔
    $ make distclean         # 完整清除編譯產生的檔案
    ```
5. 關閉 Docker 容器
    ```
    $ exit                   # 在 docker 容器中進行
    $ ./Docker/linux/stop    # 在 Host 端進行
    ```

## VSCode

本節提供給 VSCode 的使用者。

1. 安裝 remote extension
    ![](https://raw.githubusercontent.com/yuhao-kuo/NKUST-thesis-template/master/Docs/images/docker/vscode_remote_extension.png)

2. 啟動 container 進行服務可雙擊檔案或以 terminal 於專案目錄中執行啟動指令。如果正常運作執行後終端機將會自動關閉。
    * Linux / Mac
    ```
    $ ./Docker/linux/start
    ```
    * Windows
    ```
    > ./Docker/windows/start.bat
    ```
3. `ctrl+p` 呼叫命令工具，找到(可直接輸入) `> Remote-Container: Attach to Running container ...`，點擊後選擇 *latex-srv* 即可進入開發環境。
![](https://raw.githubusercontent.com/yuhao-kuo/NKUST-thesis-template/master/Docs/images/docker/vscode_attach_container.png)
![](https://raw.githubusercontent.com/yuhao-kuo/NKUST-thesis-template/master/Docs/images/docker/vscode_select_container.png)
4. 開啟資料夾，論文目錄預設掛載在 `/home/<使用者名稱>/thesis` 中。
![](https://raw.githubusercontent.com/yuhao-kuo/NKUST-thesis-template/master/Docs/images/docker/vscode_attach_container.png)

## reference

* [Use non-root user in docker container](https://wshs0713.github.io/posts/fe688d83/)
* [實作撰寫第一個 Dockerfile](https://ithelp.ithome.com.tw/articles/10191016?sc=hot)
* [Docker —— 從入門到實踐 正體中文版](https://philipzheng.gitbook.io/docker_practice/)
* [使用Visual Studio Code 遠端操作docker環境下的檔案](https://medium.com/%E5%A4%BE%E7%B8%AB%E4%B8%AD%E6%B1%82%E7%94%9F%E5%AD%98%E7%9A%84%E4%BA%BA%E9%A1%9E/%E4%BD%BF%E7%94%A8visual-studio-code-%E9%81%A0%E7%AB%AF%E6%93%8D%E4%BD%9Cdocker%E7%92%B0%E5%A2%83%E4%B8%8B%E7%9A%84%E6%AA%94%E6%A1%88-ebb35292a5b1)
* [Docker 中刪除 Images 鏡像 及 Containers](https://www.opencli.com/linux/docker-delete-images-containers)