日志
- 2024-02-26:新增国自然地区科学基金项目LaTeX模板。
- 2024-02-18:1. 优化正文中文字体选择,这可能影响中文加粗。2. 增强对旧版本TexLive的兼容性:将main.tex中类似
{\input{extraTex/1.1.立项依据.tex}}
的代码改为\input{extraTex/1.1.立项依据.tex}
,即去除最外层的大括号。 - 2024-02-14:优化“LaTeX技巧”教程,包括有序列表、表格等内容。另外,fylimas/nsfc项目正在活跃维护中,很快可以在overleaf中使用(地区/青年/面上),感兴趣的小伙伴可多加关注(~ ̄▽ ̄)~
前言
研究基金标书和毕业论文之类的文书其实很适合用LaTeX完成。今年首战国青,我已经准备使用LaTeX来完成标书写作。之前在网上找到的模板如下:
- Ruzim/NSFC-application-template-latex: 国家自然科学基金申请书正文(面上项目)LaTeX 模板(非官方)
- Readon/NSFC-application-template-latex: 国家自然科学基金申请书正文(面上项目)模板(非官方)
这两位大佬的模板挺不错的,但自己用起来总是差点意思。因此,在他们的基础上,我结合2024年最新的国家自然科学基金项目的部分Word模板重新地修了一下,具体链接如下:
- ChineseResearchLaTeX/NSFC_Young(青年)
- ChineseResearchLaTeX/NSFC_General(面上)
- ChineseResearchLaTeX/NSFC_Local(地区)
如果上述链接不可用,也可访问Gitee镜像:
- ChineseResearchLaTeX/NSFC_Young(青年)
- ChineseResearchLaTeX/NSFC_General(面上)
- ChineseResearchLaTeX/NSFC_Local(地区)
我只是略懂LaTeX,大家有什么建议可以在评论区留言,非常感谢 (~ ̄▽ ̄)~ 这里我也附上我模板的使用技巧,这样可以更容易上手。
测试平台
VScode内置tab已经完善支持LaTeX-PDF相互跳转,不需要特别安装SumatraPDF(如果你不喜欢它)。
安装
我基本上是按照文章《知乎:使用VSCode编写LaTeX》来配置texlive和VScode的环境的。编译环境是: Windows 10 + TexLive 2022
,编绎顺序是:xelatex -> bibtex -> xelatex -> xelatex
。我使用VSCode的主要原因是我平时写Python等代码时就是用的VSCode;而且外观比较漂亮:
操作 – 跳转
VSCode对LaTeX-PDF相互跳转的支持也挺不错的,写作时很方便:
从LaTeX搜索PDF:光标置于代码中,然后按下 Alt+Ctrl+J
。从PDF搜索LaTeX:按住Ctrl并单击pdf中需要搜索的地方。
快速打开指定tex文件
只要点击文件所在代码,按F12
就可以调出;鼠标左键双击
就可以锁定在工作窗口上:
VSCode配置
我的VSCode的setting.json
文件中LaTeX配置部分如下 ,仅供参考:
// LaTeX
"latex-workshop.intellisense.package.enabled": true, //根据加载的包,自动完成命令或包
// "latex-workshop.latex.autoBuild.run": "never", //禁止保存文件时自动build
"latex-workshop.latex.tools": [
{
// 编译工具和命令
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"%DOCFILE%"
]
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
},
{
// 未能成功运行
"name": "XeLaTeX+MakeIndex+BibTeX",
"command": "texify",
"args": [
"--synctex=1",
"--pdf",
"--clean",
"--quiet",
"--tex-option=\"-interaction=nonstopmode\"",
"--tex-option=\"-c-style-errors\"",
"--engine=xetex",
"%DOC%.tex"
]
},
],
"latex-workshop.latex.recipes": [
{
"name": "xe->bib->xe->xe",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "xelatex",
"tools": [
"xelatex"
],
},
{
"name": "XeLaTeX+MakeIndex+BibTeX",
"tools": [
"XeLaTeX+MakeIndex+BibTeX"
]
},
{
"name": "pdflatex",
"tools": [
"pdflatex"
]
},
{
"name": "pdf->bib->pdf->pdf",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
},
],
"latex-workshop.latex.clean.fileTypes": [ //设定清理文件的类型
//"*.aux",
"*.bbl",
"*.blg",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
//"*.out",
"*.toc",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.ist",
"*.fls",
"*.log",
"*.fdb_latexmk",
"*.nav",
"*.snm",
"*.synctex.gz"
],
"latex-workshop.view.pdf.viewer": "tab",
"latex-workshop.view.pdf.internal.synctex.keybinding": "ctrl-click",
"latex-workshop.message.error.show": false,
"latex-workshop.message.warning.show": false,
大致的意思就是定义xe
和bib
的行为,然后构建默认的xe->bib->xe->xe
流程。大多数带参考文献的中文LaTeX都需要这4步编译才能正常显示。
模板优势
vs. Ruzim/NSFC-application-template-latex
- 对数学公式支持更好。
- 通过类似
{\input{extraTex/1.1.立项依据.tex}}
的代码引用内容块,从而避免主tex文件过于庞杂;而且很符合一般人的写作思维。尽管这不一定是正确使用方法。 - 优化图片、超链接、图表(特别是超长图表)的显示。
- 更灵活地定义
section
的属性。 - 根据2024年模板微调:解决了大小标题中数字是宋体而不是楷体的bug、页边距、
(建议8000字以内):
不加粗等。
LaTeX技巧
子tex
我将不同的内容拆分成子tex,从而实现一定程度的模块化:
如果你正在频繁地更新某一个tex而其它tex相对不变,则可以在测试阶段只编绎那部分tex,这样可以节省编绎时间;只要在主tex文件注释一下类似{\input{extraTex/1.1.立项依据.tex}}
的代码就行。另外,对于多人协作文档不同部分可能也有好处。
另外,我认为国自然标书的模板应该高度模块化。类似官方模板样式等自由度较低的特性可以纳入base包;而次级标题的样式、公式、代码等自由度较高的个性化功能的定制,可以参考面向对象编程的思路(比如只需要改一下参数就可以选不同的样式),这样应该可以做出符合更广泛人群需求的模板。这个有机会再折腾吧 (~ ̄▽ ̄)~
section
我基于titlesec
定义了不同层次section。完全可以直接copy一个旧的section设置,然后用类似的方法定义它的属性:
\titleclass{\subsubsubsection}{straight}[\subsubsection]
\newcounter{subsubsubsection}[subsubsection]
\renewcommand\thesubsubsubsection{(\arabic{subsubsection})}
\titleformat{\subsubsubsection}
{\templatefont \bfseries} % format \color{MsBlue}
{\hspace{1em} (\arabic{subsubsubsection})} % 类似(1)
% {\hspace{1em} \arabic{subsection}.\arabic{subsubsection}.\arabic{subsubsubsection}} % 类似1.1.1
{0.5pt} % separation
{} % before-code
\makeatletter
\def\toclevel@subsubsubsection{4}
\def\l@subsubsubsection{\@dottedtocline{4}{7.0em}{4em}}
\makeatother
如果你的标书拥有很多层级,可以尝试这个方法。不过一般都是用2-3个层级就够了。我自己在国自然标书里调了一个层级样式:(一)→1 → 1.1 → (1)
:
之所以不选择(一)→1 → 1.1 → 1.1.1
,是因为我个人感觉1.1.1
更偏理科,对于医学人来说还是(一)→1 → 1.1 → (1)
看着比较顺眼 (~ ̄▽ ̄)~ 不过,官方模板并没有严格限制,只是说层次分明,标题突出
,所以这里有充分的自由度。大家自己在模板的基础DIY应该难度不大!
图片
我的图片都放在根目录/figures
里面,这样会比较容易管理。一般使用photoshop将PDF矢量图组合为300-600ppi格式的psd文件,然后再保存为png格式。我比较少直接引用PDF格式。
我的图片代码基本类似:
\begin{figure}[!th]
\begin{center}
\includegraphics[width=6in]{figures/xxx.png}
\caption{这里写标题。\\
\raggedright \justifying \noindent
(如果有的话)这里另起一行来描述图。
}
\label{xxx}
\end{center}
\end{figure}
这样图是居中显示,而且差不多可以覆盖整宽。width我觉得5.5-6in
都可以。
表格
基金标书中我没有表格。如果你真的要插入表格,建议使用“ivankokan/Excel2LaTeX”之类的插件或工具生成表格的LaTeX代码。这是示例文件中的表格,样式接近出版级别,写标书应该没问题:
有序列表
这个也是挺常用的:
我专门定制了item标题字体:
\newcommand{\itemtitlefont}[1]{\textbf{\color{MsBlue} #1}} % 定义item小标题字体;
联合enumerate就这样用:
\begin{enumerate}
\item \itemtitlefont{项目1}:描述1 。
\item \itemtitlefont{项目2}:描述2。
\end{enumerate}
这样\itemtitlefont{}
也可以在非enumerate
场景中使用,相当于强调。
使用国自然主题色强调的创意是我在单位举办的优秀国自然标书观摩中看到的,个人感觉颜色很舒服,遂在模板定制中予以采纳。
其它
- 善用
\clearpage
,经常可以很好地协调图片的相对位置。 - 灵活使用
\vskip -5mm
之类的命令调整上方垂直空间的大小。 - 想到之后慢慢补充。
小结
我2024年写的青基,目前自己这套模板用下来感觉挺好,排版精美、层次分明:
我会持续维护我的模板,大家有什么问题可以在下面留言。特别欢迎LaTeX大佬们多多指点!最后,祝大家马到功成!
扩展阅读
- TeX 家族(TeX, XeTeX, LuaTeX,XeLaTeX …看完这篇就懂了) – 知乎:了解不同TeX引擎的区别与联系。
- P3 LaTeX文档基础排版_哔哩哔哩_bilibili:LaTeX论文写作的一些常见语法。
- Overleaf, Online LaTeX Editor:LaTeX在线协作平台。许多LaTeX经典模板可供使用、学习。
- 常用 LaTeX 代码:一个不错的LaTeX学习平台
- Ruzim/NSFC-application-template-latex
- Readon/NSFC-application-template-latex
- MCG-NKU/NSFC-LaTex
- fylimas/nsfc: nsfc – 国家自然科学基金项目LaTeX模版(青年+面上):这个项目还在比较活跃地更新。
- iNSFC系列
- YimianDai/iNSFC: An awesome LaTeX template for NSFC proposal.:在 MacTeX 和 Overleaf 上均可编译通过。更新也挺频繁。
- KimHe/iNSFC: NSFC LaTeX
- LaTeX 入门与进阶 | LaTeX 入门与进阶
---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍
请问标题里面数字1/2/3的字体怎么才能改成楷体? 我自己的模板搞了半天好像都不行
在我的模板里有一段,您可以按实际情况修改:
然后,标题里使用
\templatefont
这个字体即可。以section
为例:主要就是那个fontspec宏包用不了 试了试其他的tex 已经写好的本子编译不出来。所以还是用回以前的,想请教用ctex写,PDFtex编译可以解决这个问题么
我的模板开头指定了编绎的类型顺序:
编译顺序: xelatex -> bibtex -> xelatex -> xelatex
。 我并没有在其它环境下测试过。 不过,由于tex版本比较多,它们之间不兼容也很正常。 如果您还是用ctex
,用不了fontspec宏包,那么本教程并不适合您。您要想想别的法子(~ ̄▽ ̄)~ 这个超出我能力范围之外了向爱学习的人致敬!
(~ ̄▽ ̄)~ 加油!! 祝大家基金高中!