Hugo Tutorial
I. Install Hugo & Setup Theme
2 best tutorial about hugo
Về cơ bản, chúng ta host blog lên github sẽ tạo 2 repository
- Repo 1: hieudoan7: chứa các file config của hugo, content, nói chung tất tần tật.
- Repo 2: hieudoan7.github.io: repo này chứa file html để render lên web
Chú ý: dateformat trong file config.toml (ở thư mục gốc, thư mục mà ta có thể sử dụng hugo command) phải để ở ngày 2.1.2006 ở bất kỳ format nào (vd: “January 02, 2006”) (hình như là theo quy định của Golang :v)
II. Post & Deploy
- Tạo post
hugo new posts/mypost.md
- Chỉnh sửa config toml file
mypost.md
- draft = “false”
- title = “My Title post”
- Add nội dung bài post dưới phần toml header
- Chạy trên local host để check:
hugo server -w (--watch)
- Deploy qua
hieudoan7.github.io
để nó render lên webhugo -d (--deploy) ../hieudoan7.github.io/
- Push 2 repo lên github để host là được.
git config --global user.name "hieudoan7
git config --global user.gmail "hieudoan190598@gmail.com"
git config --list
Vào từng cái repo (trong 2 repo đã có file .git rồi nên ko cần dùnggit remote
)
git add .
git commit -m "comment for your commit"
git push origin master
III. Add comment componet
First, Every article use the single.html template to render page, so in order to add any components or header/footer or everything related to page view, you need to modify the single.html
file which is located in themes/hugo-coder/layout/_default/single.html
, notice that every other single.html
will not be accepted.
Second, you create a disqus.html
file in partials
folder which is basically a template for comment section and then attach it to the above single.html
using valid syntax such as existing file.
IV. Hugo Tips
1. Insert Image in Hugo post
- Bỏ image vào folder static (cùng
config.toml
) - Link đường dẫn image trong post (
/imgs/my_image.jpg
) (thư mục gốc/
là tương đương vớistatic/
)
2. Xuống dòng
- 2 dấu cách (giống trên stackoverflow, codeforces)
3. Math Expression
Dùng MathJax
- Tạo file
mathjax_support.html
trongtheme/layouts/partials/
1<script type="text/javascript" async
2 src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
3 MathJax.Hub.Config({
4 tex2jax: {
5 inlineMath: [['$','$'], ['\\(','\\)']],
6 displayMath: [['$$','$$']],
7 processEscapes: true,
8 processEnvironments: true,
9 skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
10 TeX: { equationNumbers: { autoNumber: "AMS" },
11 extensions: ["AMSmath.js", "AMSsymbols.js"] }
12 }
13 });
14 MathJax.Hub.Queue(function() {
15 // Fix <code> tags after MathJax finishes running. This is a
16 // hack to overcome a shortcoming of Markdown. Discussion at
17 // https://github.com/mojombo/jekyll/issues/199
18 var all = MathJax.Hub.getAllJax(), i;
19 for(i = 0; i < all.length; i += 1) {
20 all[i].SourceElement().parentNode.className += ' has-jax';
21 }
22 });
23
24 MathJax.Hub.Config({
25 // Autonumbering by mathjax
26 TeX: { equationNumbers: { autoNumber: "AMS" } }
27 });
28</script>
- Add file này vào
footer.html
orheader.html
(trước thẻ</footer>
)
1{{ partial "mathjax_support.html" . }}
Nguồn: https://divadnojnarg.github.io/blog/mathjax/
4. Insert table in hugo blog
- Tạo table using markdown syntax
- add css style để full border (2px) and padding 1rem
1<style>
2 th, td {
3 padding: 1.0rem;
4 }
5 table, th, td {
6 border: 2px solid black;
7 }
8 </style>
5. Highlight code block
Config to use syntax-highlight in hugo config file.
You can remove all pygment config now because it will be override eventually after using markup.highlight
config
1[markup.highlight]
2 codeFences = true
3 guessSyntax = true
4 hl_Lines = ''
5 lineNoStart = 1
6 lineNos = true
7 lineNumbersInTable = false
8 noClasses = true
9 style = 'perldoc'
10 tabWidth = 4
You can also override the syntax highlight configuration in code block.
Example:
1import numpy
2
3print("This is test.\n")
199import "fmt"
200func main() {
201 fmt.Println("Hello world")
202}
You can learn more in the entry-link