这个环境由 l3doc
文档类提供
这个环境由 l3doc
文档类提供
使用 listings 包,开启 breaklines = true
,然后用 \lstinline
排版行内代码。
\documentclass{ctexbook}
\usepackage{listings}
\lstset{breaklines=true,basicstyle=\ttfamily}
\begin{document}
这是一段文字,这是一段文字,这是一段文字。
\lstinline|print("Hello world hello world")|
\end{document}
\documentclass{article}
\DeclareFontFamily{U}{ntxmia}{\skewchar \font =127}
\DeclareFontShape{U}{ntxmia}{m}{it}{<-> ntxmia}{}
\DeclareSymbolFont{lettersA}{U}{ntxmia}{m}{it}
\SetSymbolFont{lettersA}{bold}{U}{ntxmia}{b}{it}
\DeclareMathSymbol{\piup}{\mathord}{lettersA}{25}
\begin{document}
$\piup$
\end{document}
使用 ctex
宏包或者 xeCJK
宏包,不要直接用 fontspec 调用中文字体。
我没看明白连接线的规律,所以没画
\documentclass{article}
\usepackage{tikz}
\begin{document}
\newcounter{mycount}
\setcounter{mycount}{1}
\begin{tikzpicture}
\foreach \s in {2,...,8}
{
\pgfmathsetmacro{\z}{\s-1}
\foreach \x in {1,...,\z}
{
\draw node[draw,circle,inner sep=2pt] at (\x, \s-\x) {\themycount\global\stepcounter{mycount}};
}
}
\draw[-latex] (-1,0) -- (9,0) node[below] {$x$};
\draw[-latex] (0,-1) -- (0,9) node[left] {$y$};
\foreach \i in {1,...,7}
{
\fill (\i,0) circle[radius=1pt] node[below] {\i};
\fill (0,\i) circle[radius=1pt] node[left] {\i};
}
\filldraw (0,0) circle[radius=2pt] node[below left] {$O$};
\end{tikzpicture}
\end{document}
用 amsthm
宏包定义各种定理类环境,参考 https://switwu.github.io/2022-12-31-amsthm-notes/
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[label={[\arabic*]}]
\item hello
\item world
\end{enumerate}
\end{document}
\documentclass{article}
\usepackage{ctex}
\usepackage{tikz}
\ExplSyntaxOn
\int_new:N \l_exercise_number_int
\NewDocumentCommand{\datika}{ m }{
\int_set:Nn \l_exercise_number_int { #1 }
\begin{tikzpicture}[overlay,remember~picture]
\node[
fill=gray!10,
rounded~corners,
shift={(1,0)},
align=left,
font={\baselineskip=2.6em}
] at (current~page.west){
{\heiti 答题卡} \\
\int_step_inline:nn
{ \l_exercise_number_int }
{ ##1.\underline{\hspace{1cm}} \\ }
};
\end{tikzpicture}
}
\ExplSyntaxOff
\begin{document}
hello\datika{15}
\end{document}
或者
\documentclass{article}
\usepackage{ctex}
\usepackage{tikz}
\ExplSyntaxOn
\int_new:N \l_exercise_number_int
\int_set:Nn \g_tmpa_int { 1 }
\NewDocumentCommand{\datika}{ m }{
\int_set:Nn \l_exercise_number_int { #1 }
\begin{tikzpicture}[overlay,remember~picture]
\node[
fill=gray!10,
rounded~corners,
shift={(1,0)},
align=left,
font={\baselineskip=2.6em}
] at (current~page.west){
{\heiti 答题卡} \\
\int_step_inline:nn
{ \l_exercise_number_int - 1 }
{ \int_use:N \g_tmpa_int.\underline{\hspace{1cm}} \int_gincr:N \g_tmpa_int \\ }
\int_use:N \l_exercise_number_int. \underline{\hspace{1cm}}
};
\end{tikzpicture}
}
\ExplSyntaxOff
\begin{document}
hello\datika{15}
\end{document}
PDF 的字体信息可以通过命令行工具(如 pdffonts
)查看的
看手册 mtpro2.pdf,其提供了一个命令 \SQRT
:
\documentclass{article}
\usepackage{mtpro2}
\begin{document}
\[\SQRT[3]{\sum_{i=1}^n (x_i-y_i)^3}\quad
\sqrt[3]{\sum_{i=1}^n (x_i-y_i)^3}\]
\end{document}
markdown 不会用?你没看到反斜杠都被吞了?
\documentclass{article}
\usepackage{mtpro2}
\DeclareSymbolFont{largesymbols-cmex}{OMX}{cmex}{m}{n}
\DeclareMathSymbol{\intop}{\mathop}{largesymbols-cmex}{"52}
\DeclareRobustCommand\int{\intop\nolimits}
\DeclareFontEncoding{LMX}{}{}
\DeclareFontSubstitution{LMX}{ntxexx}{m}{n}
\DeclareSymbolFont{largesymbols-newtxmath}{LMX}{ntxexx}{m}{n}
\DeclareMathDelimiter{\langle}{\mathopen}{symbols}{104}{largesymbols-newtxmath}{10}
\DeclareMathDelimiter{\rangle}{\mathclose}{symbols}{105}{largesymbols-newtxmath}{11}
\begin{document}
\[ \int \left\langle \frac{u}{|u|},\frac{v}{|v|}\right\rangle \alpha\xi\zeta\]
\end{document}
这个就是 TeX 中的一个特殊规则(见 TeXbook 204 页),在早些年代,计算机内存较小,这种定义方式可以节省一些字节量。
现在定义宏不推荐这种写法,能看明白就行。
用 pdftex
跑下面的代码:
\tracingmacros=1
\def\foo#1#2#{*#1,#2*}
\foo 1 2{}
\foo 1 {2}
\bye
在 log 文件中会看到:
\foo #1#2{->*#1,#2*{
#1<-1
#2<- 2
\foo #1#2{->*#1,#2*{
#1<-1
#2<- %%%注意这里有一个空格,自己测试一下
对于 \foo 1 2{}
,\foo
接收的第一个参数是 1
,第二个参数为第一个参数与左花括号之间的所有 token,也就是空格符和 2
;而对于 \foo 1 {2}
,第一个参数还是 1
,而第二个参数只剩下一个空格符;再改一下,如果删掉 1
后面的空格符的话(即 \foo 1{2}
),第二个参数就是空的。
我们可以通过这个特性定义带可选参数的宏,看看从 xcolor
里面节选的一段代码:
\documentclass{article}
\usepackage{xcolor}
\makeatletter
\def\testclr#1#{\@testclr{#1}}
\def\@testclr#1#2{{\fboxsep\z@\fbox{\colorbox#1{#2}{\phantom{XX}}}}}
\makeatother
\begin{document}
\testclr{red}
\testclr[rgb]{1,0,1}
\end{document}
\testclr
只有一个参数,且这个参数位于宏本身与左花括号之间,所以
\testclr{red}
,#1
为空,于是传给 \@testclr
的第一个参数为空,第二个参数为 red
\testclr[rgb]{1,0,0}
,第一个参数为 [rgb]
,第二个参数为 1,0,0
,于是传给 \@testclr
的两个参数也一样看这个,和你的需求一模一样
https://tex.stackexchange.com/questions/23432/how-to-create-my-own-math-operator-with-limits
看来光丢个链接还不行?
\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}
\makeatletter
\DeclareRobustCommand\bigop[1]{%
\mathop{\vphantom{\sum}\mathpalette\bigop@{#1}}\slimits@
}
\newcommand{\bigop@}[2]{%
\vcenter{%
\sbox\z@{$#1\sum$}%
\hbox{\resizebox{\ifx#1\displaystyle.9\fi\dimexpr\ht\z@+\dp\z@}{!}{$\m@th#2$}}%
}%
}
\makeatother
\newcommand{\bigK}{\DOTSB\bigop{\mathrm{K}}}
\begin{document}
\[
\bigK_{N=1}^n \frac{a_N}{b_N}
\quad
\textstyle
\bigK_{N=1}^n \frac{a_N}{b_N}
\quad
\scriptstyle
\bigK_{N=1}^n \frac{a_N}{b_N}
\quad
\scriptscriptstyle
\bigK_{N=1}^n \frac{a_N}{b_N}
\]
\end{document}
如果这是 LaTeX-Workshop 拓展的问题,请到其 Github issues 处提交问题报告。
问 LaTeX的function环境?