给几个回答
- 参考 https://sikouhjw.github.io/2020/04/29/2020-04-29-Make-an-example-environment-with-minted/
- 使用
codehigh
宏包 - 使用
tcolorbox
宏包
codehigh
宏包tcolorbox
宏包使用 magicwatermark
宏包, 并通过外部文件来添加页脚信息.
%pagefoot.txt
{faraday.jpg}{爱情既是友谊的代名词,又是我们为共同的事业而奋斗的可靠保证,爱情是人生的良伴,你和心爱的女子同床共眠是因为共同的理想把两颗心紧紧系在一起。\par \hfill ------ 法拉第}
{newton.jpg}{苹果砸了我的头,我成了物理学家。\par \hfill ------ 牛顿}
%main.tex
\documentclass{ctexart}
\usepackage[margin=2cm]{geometry}
\usepackage{graphicx}
\graphicspath{{figure/}}
\usepackage{fontawesome5}
\usepackage{magicwatermark}
\usepackage{zhlipsum}
\ExplSyntaxOn
\clist_clear_new:N \l_pagefoot_image_clist
\clist_clear_new:N \l_pagefoot_text_clist
\cs_new:Npn \pagefoot_add_content:nn #1#2 {
\clist_gput_right:Nn \l_pagefoot_image_clist { #1 }
\clist_gput_right:Nn \l_pagefoot_text_clist { #2 }
}
\ior_open:Nn \g_tmpa_ior { pagefoot.txt }
\ior_map_inline:Nn \g_tmpa_ior
{
\pagefoot_add_content:nn #1
}
\ior_close:N \g_tmpa_ior
\PageSetup*{
\begin{tikzpicture}[remember~picture,overlay]
\fill[red!25] ([xshift=1cm]current~page.south~west) rectangle ([yshift=3cm]current~page.south~east);
\fill[red!50] ([xshift=1cm,yshift=1cm]current~page.south~west) --++(0,2) -- ++(2,0)--cycle;
\fill[red!50] ([xshift=-2cm]current~page.south~east) -- ++(2,0) -- ++(0,2)--cycle;
\node[anchor=west] at ([shift={(1.2,1.5)}]current~page.south~west){\includegraphics[width=1.8cm,height=2.4cm]{\clist_item:Nn \l_pagefoot_image_clist{ \thepage }}};
\node[font=\bfseries,] at ([shift={(-0.5,0.5)}]current~page.south~east){\thepage};
\node[anchor=north~west] at ([shift={(3.5,2.8)}]current~page.south~west)
{
\begin{minipage}{\dimeval{\paperwidth-4.5cm}}
\textcolor{red!50}{\faBook}\hskip .5em\tikz[baseline]{\node[anchor=base,rounded~corners,fill=red!50,inner~sep=.3mm]{物理学史};}\hskip 1em \clist_item:Nn \l_pagefoot_text_clist { \thepage }
\end{minipage}
};
\end{tikzpicture}
}
\ExplSyntaxOff
\Watermark
\pagestyle{empty}
\begin{document}
\zhlipsum[1]
\newpage
\zhlipsum[2]
\end{document}
效果如下:
第一页
第二页
附件:
pagefoot.zip
给一个较为简单的办法:
定义函数 \tzhmode
如下
\NewDocumentCommand{\tzhmode}{m}
{
\str_case:nn {#1}
{
{show}
{
\def\xsbxd{
\int_step_inline:nnn{1}{3}{
\noindent \seq_item:Nn \xsb_jianda{####1}\par
\noindent \seq_item:Nn \xsb_xiangda{####1}\par
}
}
}
{hide}{\let\xsbxd\relax}
}
}
再为 \enddocument
添加一个 hook
,
\AtEndDocument
{
\newpage
\xsbxd
}
即可.
完整 mwe 如下:
\documentclass{ctexart}
\ExplSyntaxOn
\seq_new:N \xsb_jianda
\seq_new:N \xsb_xiangda
\tl_new:N \c_teacher_mode_tl
\tl_set:Nn \c_teacher_mode_tl{详答}
\tl_new:N \c_printer_mode_tl
\tl_set:Nn \c_printer_mode_tl{简答}
\tl_new:N \g__tzhmode_tl
\NewDocumentCommand{\tzhmode}{m}
{
\str_case:nn {#1}
{
{show}
{
\def\xsbxd{
\int_step_inline:nnn{1}{3}{
\noindent \seq_item:Nn \xsb_jianda{####1}\par
\noindent \seq_item:Nn \xsb_xiangda{####1}\par
}
}
}
{hide}{\let\xsbxd\relax}
}
}
%创建解答环境
\NewDocumentEnvironment{solution}{s +b} %\begin{solution}* \end{solution} \begin{solution} \end{solution}
{
\tl_if_eq:NNTF \g_tzhmode_tl \c_teacher_mode_tl
{
\par
\IfBooleanTF{#1}
{
~#2
}
{
~#2
}
}{}
\seq_gput_right:Nn \xsb_xiangda{#2 \par}
}
{
}
%创建答案命令
\NewDocumentCommand{\daan}{o +m}{
\par
\tl_if_eq:NNTF \g_tzhmode_tl \c_printer_mode_tl
{
\IfNoValueTF{#1}{~#2 \par }{~#2 \hspace{1cm} ~#1 \par }
}
{
\tl_if_eq:NNT \g_tzhmode_tl \c_teacher_mode_tl
{
\IfNoValueTF{#1}{~#2 \par }{~#2 \hspace{1cm} ~#1 \par }
}
}
\seq_gput_right:Nn \xsb_jianda{#2}
}
\NewDocumentCommand{\xsbjd}{}
{
\seq_map_inline:Nn \xsb_jianda{##1}
}
\AtEndDocument
{
\newpage
\xsbxd
}
\ExplSyntaxOff
\begin{document}
\tzhmode{show}
% \tzhmode{hide}
\begin{enumerate}
\item 这是第一题
\daan{选A}
\begin{solution}
为什么选择A
\end{solution}
\item 这是第二题
\daan{选B}
\begin{solution}
为什么选择B
\end{solution}
\item 这是第三题
\daan{选C}
\begin{solution}
为什么选择C
\end{solution}
\end{enumerate}
\end{document}
使用 \node[] at (2,2) {$y=(x+1)-\frac{1}{3}e^x$};
标注即可
有没有觉得你的需求有些奇怪)
在固定的盒子里面,你想放一个“漂浮”的物体(
好久没画图了,手生,将就一下吧
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections,arrows.meta}
\begin{document}
\begin{tikzpicture}[>=Stealth]
\draw[->] (-3,0) -- (3,0);
\foreach \x in{20,30,40}
\draw[->,name path=p\x] (0,0) -- (\x:3);
\draw[name path=p50,domain=-2:2,smooth] plot (\x,0.5*\x*\x);
\draw[name intersections={of=p20 and p50,name=i,total=\t},fill=white]
{(i-2) circle (1pt)};
\draw[name intersections={of=p30 and p50,name=i,total=\t},fill=white]
{(i-2) circle (1pt)};
\draw[name intersections={of=p40 and p50,name=i,total=\t},fill=white]
{(i-2) circle (1pt)};
\draw[name intersections={of=p20 and p50,name=i,total=\t},fill=white]
{(i-1) circle (1pt)};
\end{tikzpicture}
\end{document}
l3fp
帮助计算xmax=1e4
选项才能显示完整.\documentclass[1pt]{standalone}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{euler}
%\usepackage{MnSymbol}
%\usepackage{stmaryrd}
\usepackage{xcolor}
%use xfp package
\usepackage{xfp}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepgfplotslibrary{colormaps}
\usetikzlibrary{pgfplots.groupplots,matrix}
\pgfplotsset{height=8cm,width=8cm}
\begin{document}
\begin{tikzpicture}
\begin{loglogaxis}[
enlargelimits=false,
grid=both,
ymin=5e-6,ymax=1,
xmax=1e4,
ymode=normal,
xlabel= undulations per revolution(UPR),
ylabel=amplitude transmission,
log basis y=10,
log basis x=10,
domain=1e0:1e4,samples=60,smooth,
]
% use \fpeval with xfp, x --> \x
\addplot+[no marks,ultra thick,black]{\fpeval{exp(((0.4697*1/15*\x)^2)*(-3.1415))}};
\addplot+[no marks,ultra thick,black]{\fpeval{exp(((0.4697*1.25/50*\x)^2)*(-3.1415))}};
\addplot+[no marks,ultra thick,black]{\fpeval{exp(((0.4697*1.5/150*\x)^2)*(-3.1415))}};
\addplot+[no marks,ultra thick,black]{\fpeval{exp(((0.4697*1.75/500*\x)^2)*(-3.1415))}};
\addplot+[no marks,ultra thick,red,opacity=0.8]{exp(((0.4697*2/1500*x)^2)*(-3.1415))};
\end{loglogaxis}
\end{tikzpicture}
\end{document}
函数拟合,不太好想
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[-latex] (-2,0) -- (2,0)node[right]{$x$};
\draw[-latex] (0,-1.8) -- (0,1.8)node[above]{$y$};
\draw[rounded corners] (0,0) ..controls (0.19,0.2) .. (0.4,1) ..controls(1.13,0.58).. (1.7,0)node[below]{$\pi$};
\draw[rounded corners] (0,0) ..controls (-0.19,0.2) .. (-0.4,1) ..controls(-1.13,0.58).. (-1.7,0)node[below]{$-\pi$};
\end{tikzpicture}
\end{document}
\documentclass{ctexart}
\usepackage{xparse}
\newif\ifprint
\newcommand{\tk}[1]{\underline{
\ifprint
#1
\else
\hspace*{5em}
\fi}}
\newif\ifzhengming
\NewDocumentEnvironment{zhengming}{ +b }{
\ifzhengming
\par
{\bfseries 证明}\, #1
\else
{\vspace{3cm}}
\fi
}{\par}
\newif\ifshowanswer
\showanswertrue %看这里
\ifshowanswer
\printtrue
\zhengmingtrue
\else
\printfalse
\zhengmingfalse
\fi
\begin{document}
填空题\tk{答案}
解答题
\begin{zhengming}
这是证明
\end{zhengming}
\end{document}
testclass.cls
\ProvidesClass{testclass}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{l3keys2e}
\ExplSyntaxOn
%定义 keyval,第一个参数为模块名,第二个参数为所要设置的 keyval 列表
\keys_define:nn{family}
{
name.tl_set:N = \l_name_tl,
age.int_set:N = \l_age_int,
}
\def\myname{\textbf{\tl_use:N \l_name_tl}}
\def\myage{\textbf{\int_use:N \l_age_int}}
% 设置默认值
\keys_set:nn{family}
{
name = ljguo,
age = 21,
}
\ExplSyntaxOff
% 传递 family 模块的 keyval list 给 class
\ProcessKeysOptions{family}
\LoadClass{ctexbook}
main.tex
\documentclass{testclass}
\begin{document}
my name is \myname, and i am \myage ~years old.
\end{document}
这将得到:
\documentclass[name = zhangsan,age = 81]{testclass}
\begin{document}
my name is \myname, and i am \myage ~years old.
\end{document}
这将得到:
texdoc interface3
了解更详细的用法\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[red,-latex] (-2.5*pi,0) -- (2.5*pi,0);
\draw[red,-latex] (0,-1) -- (0,2);
\draw[blue,domain = -2*pi:2*pi] plot[samples = 1000] (\x,{abs(sin(\x r))});
\end{tikzpicture}
\end{document}
唉~你的文件进出我的回收站三次了,还是帮帮你吧,谁让你 懒,而我正好 不盲 呢
minipage
随便加了些,你参考一下吧\begin{minipage}{0.5\textwidth}
\begin{educations}
\education%
{2013.09}%
[2019.09]%
{上海交通大学}%
{物理与天文学院}%
{物理学}%
{博士}
\separator{0.5ex}
\education%
{2009.09}%
[2013.06]%
{上海交通大学}%
{物理与天文系}%
{应用物理学}%
{学士}
\end{educations}
\end{minipage}
\begin{minipage}{0.5\textwidth}
\centering
\includegraphics[width = 0.4\textwidth]{example-image-b}
\end{minipage}
效果如下
node
加上 align = <center|left|right>
参数, 然后在内容中使用 \\
即可\documentclass{ctexart}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
这是一句这也是一句话这也是一句话\tikzmarknode{a}{话}
\bigskip
这也是一句话这也是一句话这也是一句话这也是一句话这也是\tikzmarknode{b}{一句话}
\begin{tikzpicture}[overlay,remember picture,cyan]
\draw ([xshift=1em] a -| b.east) -- ++ (1em,0)
|- ([xshift=1em] b.east) coordinate[pos=0.25] (c);
\draw[->] (c) -- ++ (1em,0) node[right,align = left] {我要归纳一下这\\两句话的主要内容};
\end{tikzpicture}
\end{document}
text width = <dim>
为你的内容指定宽度,使其自动换行\documentclass{ctexart}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
这是一句这也是一句话这也是一句话\tikzmarknode{a}{话}
\bigskip
这也是一句话这也是一句话这也是一句话这也是一句话这也是\tikzmarknode{b}{一句话}
\begin{tikzpicture}[overlay,remember picture,cyan]
\draw ([xshift=1em] a -| b.east) -- ++ (1em,0)
|- ([xshift=1em] b.east) coordinate[pos=0.25] (c);
\draw[->] (c) -- ++ (1em,0) node[right,align = left,text width = 6em] {我要归纳一下这两句话的主要内容};
\end{tikzpicture}
\end{document}
Dimension too large
,是的, tikz(或者说tex里面的dimexpr) 本身算不了这么大的数值plot
是在你的 domain = x:y
中,按 samples = 300, 等距离取点(或许是),然后光滑曲线连接起来即可....
\draw[] plot[domain = 0:1,samples = 10] plot(\x,2*\x);
...
其实就是在取点 (0,0),(0.1,0.2),(0.2,0.4),...
, 然后连接即可
\fpeval
命令,代码如下\documentclass[margin = 1cm]{standalone}
\usepackage{tikz,xfp}
\begin{document}
\begin{tikzpicture}[x = 0.2cm,very thin]
\draw[-latex] (-1,0) -- (5,0);
\draw[-latex] (0,-0.2) -- (0,1.5);
\draw [blue]
plot [domain=0:4.25, samples=144, smooth] (\x,\fpeval{1/(1+0.015*10^{\x})});
\end{tikzpicture}
\end{document}
当然,你也可以选择 tkz-fct
宏包,它是借助 gnuplot
来绘图的,所以你的电脑必须装有这个软件,并且需要启用 --shell-escape
参数编译,代码如下
\documentclass[margin = 1cm]{standalone}
\usepackage{tkz-fct}
\begin{document}
\begin{tikzpicture}
\tkzInit[xmax=6,ymax=1.2,ystep=0.2]
\tkzAxeXY
\tkzFct[color=blue,domain=0:6.5]{1/(1+0.015*10**x)}
\end{tikzpicture}
\end{document}
在 elegantbook.cls
中扒拉出该盒子的源码,做点小修改即可
\documentclass{ctexart}
\usepackage[most]{tcolorbox}
\usepackage{zhlipsum}
\definecolor{structurecolor}{RGB}{60,113,183}
\tcbset{
introductionsty/.style={
enhanced,
breakable,
colback=structurecolor!10,
colframe=structurecolor,
fonttitle=\bfseries,
colbacktitle=structurecolor,
attach boxed title to top center={yshift=-3mm,yshifttext=-1mm},
boxrule=0pt,
toprule=0.5pt,
bottomrule=0.5pt,
top=8pt,
before skip=8pt,
sharp corners
},
}
\NewDocumentEnvironment{mybox}{O{内容提要}+b}
{
\begin{tcolorbox}[introductionsty,title = {#1}]
#2
\end{tcolorbox}
}
{}
\begin{document}
\begin{mybox}
\zhlipsum[1]
\end{mybox}
\begin{mybox}[这是题目]
\zhlipsum[2]
\end{mybox}
\end{document}
问 一行内如何左边抄录 tex 代码,右边显示编译后的结果