首先,不建议使用
「同一个node里」左右放置两个tikzpicture
,比较难管理
更建议「分别」建立「A.tex」绘制左图和「B.tex」绘制右图,再用传统插入图片PDF与caption的方式排版主文档,这样还有一个好处,caption可以使用超链接,也不用手动编号.
本着分而治之的思想,在找问题时最好将源代码分为不出问题的和出问题的两份。
1 / (x-1) + 1
」:\documentclass[tikz,border=5pt]{standalone}
\usepackage{ctex} % 加载中文支持
\usepackage{pgfplots} % 核心绘图库
\pgfplotsset{compat=1.18}
\usepackage{bm} % 或
\usepackage{amsmath,amsfonts}
\usetikzlibrary{positioning}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines = middle,
xlabel = $x$,
ylabel = $y$,
x=0.5cm, % x轴每单位长度0.8cm
y=0.5cm, % y轴每单位长度0.8cm
width=11 * 0.5cm, % 根据x轴范围计算宽度
height=6 * 0.5cm, % 根据y轴范围计算高度
xlabel style={at={(ticklabel* cs:1)}, anchor=north, below=1pt},
ylabel style={at={(ticklabel* cs:1)}, anchor=east, left=1pt},
xmin = -1, xmax = 9,
ymin = -1, ymax = 5,
axis line style = {-{Triangle[scale=1]}}, % 修正箭头语法
%——刻度和刻度线
xtick = {1, 7}, %x标点
xticklabels = {$a$, $b$}, %x自定义
ytick = \empty, % 隐藏y轴刻度
tick style={draw=none}, % 隐藏所有刻度线
title={$\bm{f'(x) \geq 0}$},
title style={
at={(0.5,0)}, % 相对位置 (x,y) ∈ [0,1]
anchor=north, % 锚点方向
yshift=5pt % 垂直偏移
}
]
\node[below left] at (axis cs:0,0) {$O$};%原点
\addplot[ % 函数f(x)=1/(x-1) + 1
domain = 1:7, % 定义域[1,7]
samples = 300, % 采样点密度(值越高曲线越平滑)
smooth, % 平滑曲线
line width = 0.5pt, % 设置为0.5磅线宽
blue % 颜色
] { 1 / (x-1) + 1 }; % 函数表达式(deg()将弧度转角度)
\draw[dash pattern=on 1pt off 1pt, lightgray] (axis cs:1,0) -- (axis cs:1,5); % 从x=a处画垂直线
\draw[dash pattern=on 1pt off 1pt, lightgray] (axis cs:7,0) -- (axis cs:7,1/6+1); % 从x=b处画垂直线
% x=3 处切线
\addplot[domain=0.7:7.3, smooth, red, line width= 0.5pt]{-0.25*x + 2.25};
% x=4 处切线
\addplot[domain=0.7:7.3, smooth, red, line width=0.5pt]{-1/9*x + 16/9};
% 在右上角添加解析式
\node[anchor=north west, align=left, xshift=-5pt, yshift=-10pt]
at (axis cs:3,4) {\large $y=f(x)$};
\end{axis}
\end{tikzpicture}
\end{document}
-1 / ( x-7 ) + 1
」\documentclass[tikz,border=5pt]{standalone}
\usepackage{ctex} % 加载中文支持
\usepackage{pgfplots} % 核心绘图库
\usepackage{bm} % 或
\pgfplotsset{compat=1.18}
\usepackage{amsmath,amsfonts}
\usetikzlibrary{positioning}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines = middle,
%——xOy
xlabel = $x$,
ylabel = $y$,
x=0.5cm, % x轴每单位长度0.8cm
y=0.5cm, % y轴每单位长度0.8cm
width=11 * 0.5cm, % 根据x轴范围计算宽度
height=6 * 0.5cm, % 根据y轴范围计算高度
%将标签定位在x轴的最末端(刻度坐标系中,1表示100%位置)
xlabel style={at={(ticklabel* cs:1)}, anchor=north, below=1pt},
ylabel style={at={(ticklabel* cs:1)}, anchor=east, left=1pt},
%
xmin = -1, xmax = 9,
ymin = -1, ymax = 5,
axis line style = {-{Triangle[scale=1]}}, % 修正箭头语法
%
%——刻度和刻度线
xtick = {1, 7}, %x标点
xticklabels = {$a$, $b$}, %x自定义
ytick = \empty, % 隐藏y轴刻度
tick style={draw=none}, % 隐藏所有刻度线
title={\large $\bm{f'(x) \leq 0}$},
title style={
at={(0.5,0)}, % 相对位置 (x,y) ∈ [0,1]
anchor=north, % 锚点方向
yshift=5pt % 垂直偏移
}
]
%图像
\node[below left] at (axis cs:0,0) {$O$};%原点
\addplot[ % 函数f(x)=1/(x-1) + 1
domain = 1:7, % 定义域[1,7]
samples = 300, % 采样点密度(值越高曲线越平滑)
smooth, % 平滑曲线
% thick, % 粗线宽
line width = 0.5pt, % 设置为0.5磅线宽
blue % 颜色
] { -1 / ( x - 7 ) + 1 };
\draw[dash pattern=on 1pt off 1pt, lightgray] (axis cs:7,0) -- (axis cs:7,5);% 从x=a处画垂直线
\draw[dash pattern=on 1pt off 1pt, lightgray] (axis cs:1,0) -- (axis cs:1,1/6+1); % 从x=b处画垂直线
% x=3 处切线
\addplot[domain=0.7:7.3, smooth, red, line width= 0.5pt]{(1/16)*x + (17/16)};
% x=4 处切线
\addplot[domain=0.7:7.3, smooth, red, line width=0.5pt]{(1/9)*x + 8/9};
% 在右上角添加解析式
\node[anchor=north west, align=left, xshift=-5pt, yshift=-10pt]
at (axis cs:3,4) % 定位
{\large $y=f(x)$};
\end{axis}
\end{tikzpicture}
\end{document}
这将报错并且得不到「有效的PDF文件」,有错误必须纠正,不可以忽略。
! Dimension too large.
<recently read> \pgf@yy
l.60 \end{axis}
其实维数太大意味着是正无穷呗~ 观察下面这段:
\addplot[ % 函数f(x)=1/(x-1) + 1
domain = 1:7, % 定义域[1,7]
samples = 300, % 采样点密度(值越高曲线越平滑)
smooth, % 平滑曲线
% thick, % 粗线宽
line width = 0.5pt, % 设置为0.5磅线宽
blue % 颜色
] { -1 / ( x - 7 ) + 1 };
当domain
中的x=7
不就除零了...
我不知道你的最终目的是什么,但是改成domain = 1:6.95
即可:
\documentclass[tikz,border=5pt]{standalone}
\usepackage{ctex} % 加载中文支持
\usepackage{pgfplots} % 核心绘图库
\usepackage{bm} % 或
\pgfplotsset{compat=1.18}
\usepackage{amsmath,amsfonts}
\usetikzlibrary{positioning}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines = middle,
%——xOy
xlabel = $x$,
ylabel = $y$,
x=0.5cm, % x轴每单位长度0.8cm
y=0.5cm, % y轴每单位长度0.8cm
width=11 * 0.5cm, % 根据x轴范围计算宽度
height=6 * 0.5cm, % 根据y轴范围计算高度
%将标签定位在x轴的最末端(刻度坐标系中,1表示100%位置)
xlabel style={at={(ticklabel* cs:1)}, anchor=north, below=1pt},
ylabel style={at={(ticklabel* cs:1)}, anchor=east, left=1pt},
%
xmin = -1, xmax = 9,
ymin = -1, ymax = 5,
axis line style = {-{Triangle[scale=1]}}, % 修正箭头语法
%
%——刻度和刻度线
xtick = {1, 7}, %x标点
xticklabels = {$a$, $b$}, %x自定义
ytick = \empty, % 隐藏y轴刻度
tick style={draw=none}, % 隐藏所有刻度线
title={\large $\bm{f'(x) \leq 0}$},
title style={
at={(0.5,0)}, % 相对位置 (x,y) ∈ [0,1]
anchor=north, % 锚点方向
yshift=5pt % 垂直偏移
}
]
%图像
\node[below left] at (axis cs:0,0) {$O$};%原点
\addplot[ % 函数f(x)=1/(x-1) + 1
domain = 1:6.95, % 定义域[1,7]
samples = 300, % 采样点密度(值越高曲线越平滑)
smooth, % 平滑曲线
% thick, % 粗线宽
line width = 0.5pt, % 设置为0.5磅线宽
blue % 颜色
] { -1 / ( x - 7 ) + 1 };
\draw[dash pattern=on 1pt off 1pt, lightgray] (axis cs:7,0) -- (axis cs:7,5);% 从x=a处画垂直线
\draw[dash pattern=on 1pt off 1pt, lightgray] (axis cs:1,0) -- (axis cs:1,1/6+1); % 从x=b处画垂直线
% x=3 处切线
\addplot[domain=0.7:7.3, smooth, red, line width= 0.5pt]{(1/16)*x + (17/16)};
% x=4 处切线
\addplot[domain=0.7:7.3, smooth, red, line width=0.5pt]{(1/9)*x + 8/9};
% 在右上角添加解析式
\node[anchor=north west, align=left, xshift=-5pt, yshift=-10pt]
at (axis cs:3,4) % 定位
{\large $y=f(x)$};
\end{axis}
\end{tikzpicture}
\end{document}
至于为什么:
意外给画了一条x=b
因为当x=7
时,除零了没法计算,计算得到的y
值遍历了(-oo,+oo)
,也就是维数太多,画成图就是一条x=b
的直线,而且报错。
0.本站不是一个「do-it-for-me」的地方,请你给出你的尝试。
1.什么是「但不是常规的目录结构,请求高手将之改写成常规的目录结构」?请截图提供目录目前的样式和预期的样式区别。
2.不建议使用外链做内容分享,有非常严重的过期风险,一旦过期,则本post将毫无意义。
我猜测你需要修改的「不是常规的结构」的代码由这里控制:
% https://github.com/sano-jin/express-beamer/blob/e503e4b561b93dbd21fcf7efc7cba4ea2045b779/sty/zh-cn/style.sty#L240-L261
\AtBeginSection[]{{
\setbeamertemplate{headline}{}%
\begin{frame}
\tableofcontents[
currentsection,
sectionstyle=show/shaded,
subsectionstyle=hide
]
\end{frame}
}}
\AtBeginSubsection[]
{{
\setbeamertemplate{headline}{}%
\begin{frame}
\tableofcontents[
currentsection,
sectionstyle=show/shaded,
subsectionstyle=show/shaded/hide
]
\end{frame}
}}
如果你不调用setspace
宏包,那么他们的行距就保持一致了。
另外,下面这几个包和MWE有关系吗?
\usepackage{multirow}
\usepackage{hanging}
\usepackage{varwidth}
\usepackage{etoolbox}
\usepackage{graphicx}
\usepackage{caption}
例子中的setspace
似乎也不是必须的(?)
如何调整longtable
中的行距(?)
maybe related: https://tex.stackexchange.com/a/203869/322482
印氪先生汉语拼音优化版W4-Regular-1.001.ttf
: https://zhuanlan.zhihu.com/p/692315749阿里巴巴普惠体AlibabaPuHuiTi-3-105-HeaVy.otf
(这里的V
为何有突兀的大写...): https://www.alibabafonts.com/#/font令人遗憾的是,xelatex
编译报错:
! Missing } inserted.
<inserted text>
}
l.42 课序&
\makecell{背诵内容\\{\large\color{red}(背诵课文部分,注释部分可不作要求)}}&家长签名\\
?
你的问题在于
\documentclass{ctexart}
\usepackage[a4paper,margin={1.5cm,1cm}]{geometry}
\usepackage{tabularx}
\usepackage{array}
% \usepackage{cellspace}
\begin{document}
\begin{tabular}
{|>{\centering\arraybackslash}m{1.4cm}|>{\centering\arraybackslash}m{1.4cm}|}
\hline%
课序 & 家长签名\\
\hline%
\end{tabular}
\end{document}
上面的MWE不可以同时调用cellspace
你的需求是:
表格完美布局问题(如内边距、边框颜色、最外边框粗细等)
从你上面的代码来看你会发现你一直在进行多种行距/颜色/粗细设置(这其实没太做好「样式与内容分离」),如果 确实需要 用LaTeX排版,我会更建议:
「逐页排版」+「tabularray
控制样式」+「行距等微调」
我逐步介绍下绘制的思路吧...
\documentclass{ctexart}
\usepackage[%
a4paper,
margin={1.5cm,1cm},
showframe,
]{geometry}
\usepackage{xcolor}
\usepackage{tabularray}
\begin{document}
\noindent
\begin{tblr}{
width=\textwidth,
hlines={red,2pt}, vlines={red,2pt},
colspec = { X[1,c]X[5,c]X[1,c] },
rowspec = { m{3.5cm} m{1.6cm} m{22cm} }
}
Alpha & Beta & Gamma \\
Epsilon & Zeta & Eta \\
Iota & Kappa & Lambda \\
\end{tblr}
\end{document}
\documentclass{ctexart}
\usepackage[17pt]{extsizes}%
\usepackage[%
a4paper,%
margin={1.5cm,1cm},%
% showframe,%
]{geometry}%
\usepackage{xcolor}%
\usepackage{tabularray}%
\usepackage{xpinyin}%
\setCJKmainfont{KaiTi} % 中文楷体
\newfontfamily\pinyinfont{印氪先生汉语拼音优化版W4-Regular-1.001.ttf}
\newCJKfontfamily\fakeboldsimsum{SimSun}[AutoFakeBold=2]
\newCJKfontfamily\AlibabaPuHuiTi{AlibabaPuHuiTi-3-105-HeaVy.otf}
% 拼音设置
\xpinyinsetup{%
font=\pinyinfont,%
ratio=0.4,%
format={\color{darkgray}},%
multiple={\color{red}}%
}%
\begin{document}%
\noindent%
\begin{tblr}{ %
width=\textwidth,stretch=0,
hlines={red,1pt}, vlines={red,1pt},
hline{2} = {white,lr},
hline{1,5} = {2pt},
vline{1,4} = {2pt},
colspec = { X[1,c]X[8,c]X[1,c] },
rowspec = { m{2cm} t{1cm} m{1.6cm} m{22cm}},
cell{1}{1} = {c=3}{font=\Large\AlibabaPuHuiTi\bfseries\color{red}\selectfont},
cell{2}{1} = {c=3}{c},
cell{4}{2} = {font=\fontsize{16}{16}\selectfont}
}%
%第一行
二年级上册背诵/默写一览表 & & \\
%第二行
班级:\underline{\hspace{3cm}} \quad
姓名:\underline{\hspace{3cm}} & & \\
%第三行
课序
&
{%
背诵内容 \\
\textcolor{red}{\small(背诵课文部分,注释部分可不作要求)}
}%
&
家长签名 \\
%第四行
3 植物妈妈有办法
&
\begin{pinyinscope}%
植物妈妈有办法\\
\bigskip\bigskip\bigskip
孩子如果已经长大,就得告别妈妈,四海为家。\\
牛马有脚,鸟有翅膀,植物要旅行又用什么办法?\\
\bigskip\bigskip
蒲公英妈妈准备了降落伞,把它送给自己的娃娃。\\
只要有风轻轻吹过,孩子们就乘着风纷纷出发。\\
\bigskip\bigskip
苍耳妈妈有个好办法,她给孩子穿上带刺的铠甲。\\
只要挂住动物的皮毛,孩子们就能去田野、山洼。\\
\bigskip\bigskip
石榴妈妈的胆子挺大,她不怕小鸟吃掉娃娃。\\
孩子们在鸟肚子里睡上一觉,就会钻出来落户安家。\\
\bigskip\bigskip
豌豆妈妈更有办法,她让豆荚晒在太阳底下,\\
啪的一声,豆荚炸开,孩子们就蹦着跳着离开妈妈。\\
\bigskip\bigskip
植物妈妈的办法很多很多,不信你就仔细观察。\\
那里有许许多多的知识,粗心的小朋友却得不到它。\\
\end{pinyinscope}
& \\
\end{tblr}
\end{document}
当然,里面的许多细节我也没处理的很好,再慢慢改良,不急....
给一种基于varwidth
(或者说盒子)的「不得体之术」:
\documentclass{ctexart}
\usepackage{showframe}
\usepackage{graphicx}
\usepackage{caption}
\captionsetup{justification=centering}
\usepackage{bicaption}
\captionsetup[figure][bi-first]{name=图}
\captionsetup[figure][bi-second]{name=Fig.}
\usepackage{lipsum,zhlipsum}
\usepackage{varwidth}
\begin{document}
\lipsum[2]
\begin{figure}[h]
\centering
\includegraphics[width=.5\textwidth]{example-image}
\bicaption{中文中文中文中文中文中文中文中文中文}{\begin{varwidth}[t]{.8\linewidth}English text English text English text English text\\ English text English text text text \end{varwidth}}
\end{figure}
\zhlipsum[2]
\end{document}
是否有更好的利用caption
包的办法而不是抖机灵呢?
稍微看了一下文档
「js控件」的位置是内部决定的,无法通过media9
/animate
的选项控制。
如果要取点,增加取点的数量/缩小取点的间隙是不是就可以解决「图象光滑度不是很满意」的问题呢?
related:
\tkzDefPoints{-2.39/0.27/A,-2/0/B,-1.15/-0.73/C,-0.55/0/D,-0.21/0.51/E,0/0/F,0.21/0.51/G,0.55/0/H,1.15/-0.73/I,2/0/J,2.39/0.27/K}
\draw plot[smooth,tension=.7] coordinates{(A)(B)(C)(D)(E)(F)(G)(H)(I)(J)(K)};
的丑陋语法让我难以接受...所以我 不打算用取点法 。
Learning From this link:
\documentclass[border=5pt,tikz]{standalone}
\tikzset{line join=round,line cap=round,thick}%
\newcommand*\myhalfpath[1][black]{%
\draw[#1] (0,0)
.. controls (.1,1) and (.6,1) .. (.8,0)
.. controls (1.2,-1.75) and (1.6,-1.2) .. (2.8,0)
.. controls (2.9,.1) and (3.1,.18) .. (3.2,.2)
;
}
\begin{document}
\begin{tikzpicture}
\draw[-latex] (-3.25,0) -- (3.25,0) node[below] {$x$};
\draw[-latex] (0,-2) -- (0,2) node[right] {$y$};
\begin{scope}[xscale=-1]
\myhalfpath[magenta]
\end{scope}
\myhalfpath[magenta]
\end{tikzpicture}
\begin{tikzpicture}
\draw[-latex] (-3.25,0) -- (3.25,0) node[below] {$x$};
\draw[-latex] (0,-2) -- (0,2) node[right] {$y$};
\myhalfpath[cyan]
\begin{scope}[scale=-1]
\myhalfpath[cyan]
\end{scope}
\end{tikzpicture}
\end{document}
如果还是不光滑就自己微调吧....
And, 希望OP可以从上面的这些提问中总结一套「此类函数绘制题」各个思路的对比和局限性的介绍,不然经常需要重复提问类似的问题。
上面使用pdflatex-pdflatex
编译会出现如下警告:
pdfTeX warning (ext4): destination with the same identifier (name{part.1}) has
been already used, duplicate ignored
<to be read again>
\relax
l.12 \part{first part}
这意味着此时hyperref
无法保证具有唯一的\thepart
,而xelatex
能正确处理「纯属巧合」
此事在texdoc hyperref
的sec13.7中亦有记载:
hyperref
中\theHsection
默认是\arabic{section}
,你如果只做\setcounter{section}{0}
是不行的,你需要重定义一下\theHsection
。下面是mwe:
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\section{apple}
\setcounter{section}{0}
\renewcommand{\theHsection}{\thesection.\thepage}
\section{banana}
\subsection{banana-tree}
\end{document}
请问这种图怎么画出来
建议看一下tikz
宏包,其中的入门内容可以比较方便地画出上图的大致轮廓。
本论坛「应该」不是一个「do-this-for-me」的平台,请尽量阅读上面的文档,使用「编辑问题」功能给一份你的尝试的代码。这样既有利于自己的能力提高,也能让论坛的uu能更有针对性地帮到你。
效果也许是这样,但「在你给出你的尝试之后我再贴代码叭😀」
\documentclass[tikz,border=1cm]{standalone}
\usepackage{physics2}
\usephysicsmodule{ab.braket}
\begin{document}
\begin{tikzpicture}
\draw (0,.5)
node[rectangle,anchor=east] {Meter}
edge node[above] {$\rho$}
++(1,0) -- ++(5,0);%
\draw (0,-.5)
node[rectangle,anchor=east] {System}
edge node[below] {$\ket|\Phi>$}
++(1,0) -- ++(5,0);%
\node[draw,thick,fill=white,rectangle,minimum size=1.75cm,font=\Huge] at (2,0) {$\hat{u}$};
\draw (4,.5)
node[circle,fill,inner sep=1pt] {} -- (4,-.5)
node[draw,thick,fill=white,rectangle,minimum size=.5cm] {}
node[below=.25cm] {$\Big\{\ket|\Phi>,\ket|\Phi^\perp>\Big\}$};
\end{tikzpicture}
\end{document}
下面两个等号应该像aligned环境一样可以对齐,不过好像在网页上用
不好弄出来
可以借助于一下代码块(狗头)
没必要在subequations
内用多个equation
:
\documentclass{article}
\usepackage{amsmath}
\setlength{\parindent}{0pt}
\begin{document}
aaaaaaaaaaaaaaaa
\begin{subequations}
\begin{align}
A &= B + C \\
D + E &= F + G + H + I
\end{align}
\end{subequations}
bbbbbbbbbbbbb
\end{document}
问3:是否有比较简单可靠的方法实现切换到landscape
环境后,页眉页脚也旋转90°?
但在理想效果中,仅有「页眉」做了旋转 ,「页脚」并未旋转
问3:是否有比较简单可靠的方法实现切换到landscape
环境后,页眉页脚也旋转90°?
关于问题3: 可以参考这个链接
个人觉得没有。
just curious: 为何需要将\chapter
也一起横向放置呢?是否有上面例子真实的使用场景?一般来说对于有「宽表格」的论文,只会在「不改变页眉页脚设置」的前提下「只将这个宽表格横置」.
在这篇JF上的「Default Risk in Equity Returns」Page.30-33.
对于一整篇文章的连续性,个人认为 「正向的第x章」应该保持一致, 一直保持「正向」的「章节页」布局。
IMHO,landscape
环境最简单也是最有效的用法是「仅仅用来旋转单独一个宽度较大的图表」.
问1:ctexbook
环境章节前一页(空白页)的页码错位,标准解决方法是什么?是否应该在每章前手动设置\cleardoublepage
?
问2:在lscape
宏包landscape
环境下,设置\cleardoublepage
无法纠正页码错位,应该如何解决该问题?
关于问题1-2: 此事在此似乎亦有记载
按照DC
的说明:
landscape
包围\chapter
\chapter
前」加上\cleardoublepage
不是很「smooth」的思路:
当需要换页时,总可以优先考虑tcolorbox
.
\documentclass{article}
\usepackage[paperheight=15cm]{geometry}
\usepackage[most]{tcolorbox}
\usepackage{tikz}
\usepackage{lipsum}
\begin{document}
\begin{tcblisting}{%
breakable,sharp corners,colback=white,
skin=beamer,enhanced jigsaw,
title={This is a code listings},
listing only,listing options={%
basicstyle=\ttfamily,
escapeinside={|}{|}},
overlay middle and last={%
\node[text=red,font=\bfseries] at ([xshift=-7.5em,yshift=1ex]frame.north east) {(Followed by last page)};%
},%
}
\section{A sec}
xxxxxxxxxxxxxxx
|\lipsum[1-5]|
yyyyyyyyyyyyyyy
\section{A sec}
\end{tcblisting}
\end{document}
主要难点是涉及整个tikz
库多文件之间的相互关联。
提取一个「相对比较简单的」MWE如下,其中:
\input{pgfmanual-en-main-preamble.tex}
需要的代码来自./base/doc/pgfmanual-en-main-preamble.tex
ltxdoc
文档类,其中定义了一些关键的命令和环境截自v3.10(2025-06-22),该文件可在这里获得:pgfmanual-en-main-preamble.tex
\documentclass{ltxdoc}
\usepackage{tikz}
\usepackage{pgf}
\input{pgfmanual-en-main-preamble.tex}
\begin{document}
\begin{codeexample}[]
\begin{tikzpicture}
\foreach \x in {1,2,...,5,7,8,...,12}
\foreach \y in {1,...,5}
{
\draw (\x,\y) +(-.5,-.5) rectangle ++(.5,.5);
\draw (\x,\y) node{\x,\y};
}
\end{tikzpicture}
\end{codeexample}
\end{document}
当然,\input{pgfmanual-en-main-preamble.tex}
内部多达300行,还是不够简的。
纵览整个pgfmanual-en-main-preamble.tex
文件,其核心在于:
% Line 187
\input{pgfmanual-en-macros}
根据TSE上搜索的结果和kpathsea
的索引逻辑,该文件的位置位于./base/tex/latex/doc/pgfmanual-en-macros.tex
上面的文件调用了pgfmanual-en-macros.tex
,我们同时还发现:
% pgfmanual-en-macros.tex
% Line 1858
\usepackage{pgfmanual}
这将会调用./base/tex/latex/doc/pgfmanual.sty
文件:
% pgfmanual.sty
\ProvidesPackage{pgfmanual}[2009/10/15]
\input pgfmanual.code.tex
其中的\input pgfmanual.code.tex
会调用上面截图路径中的pgfmanual.code.tex
:
% pgfmanual.code.tex
\input pgfmanual.prettyprinter.code.tex
\input pgfmanual.pdflinks.code.tex
接下来只要用二分删除的方式,理论上可以只提取出「最轻量」的「仅仅用于codeexample
环境实现」的部分「最短代码」。
首先尝试二分删除简化「pgfmanual-en-main-preamble.tex
」,似乎仅有这两行是必不可少的:
\usepackage{calc,listings}
% \usepackage[version=latest]{pgf}
\input{pgfmanual-en-macros}
这里[version=latest]
会报错...懒得管,先注释这个选项即可...
非常初步简化的MWE如下:
\documentclass{ltxdoc}
\usepackage{tikz,pgf,calc,listings}
\input{pgfmanual-en-macros.tex}
\begin{document}
\begin{codeexample}[]
\begin{tikzpicture}
\foreach \x in {1,2,...,5,7,8,...,12}
\foreach \y in {1,...,5}
{
\draw (\x,\y) +(-.5,-.5) rectangle ++(.5,.5);
\draw (\x,\y) node{\x,\y};
}
\end{tikzpicture}
\end{codeexample}
\end{document}
换言之,下面的工作只要专心把pgfmanual-en-macros.tex
进一步做简化即可。
TBC.
问 三阶行列式计算图解如何画?