服裝品牌網(wǎng)站怎么做如何開網(wǎng)店
文章目錄
- 前言
- 注意事項(xiàng)
- 1 Tikz 的調(diào)用方法:newcommand
- 2 標(biāo)號(hào)圓圈數(shù)字的添加方式:\large{\textcircled{\small{1}}}\normalsize
- 3 快速掌握 Tikz 箭頭寫法:插入點(diǎn)+相對(duì)位移+標(biāo)號(hào)node
- 3.1 第一張圖:插入點(diǎn)+相對(duì)位移
- 3.2 第二張圖:標(biāo)號(hào)node
- 4 警惕莫名其妙的GPT代碼:pic cs:start#1-start
- 完整代碼
前言
要做這種東西:
Listings這個(gè)庫是沒提供這種功能的。我找了它的手冊(cè),只提供了個(gè)breaklines勉強(qiáng)和箭頭有點(diǎn)關(guān)聯(lián),不過那個(gè)長這樣:
問了 GPT,他說要用 Tikz 庫。
注意事項(xiàng)
1 Tikz 的調(diào)用方法:newcommand
Tikz 庫調(diào)用的時(shí)候不能直接扔 List 的代碼里面,需要新定義一個(gè)command,然后你在哪里插入command哪里就是箭頭的起點(diǎn):
新定義的command是純字母,不要添加任何數(shù)字,不然會(huì)報(bào)錯(cuò)如下(這個(gè)報(bào)錯(cuò)你絕對(duì)聯(lián)想不到到底是什么原因?qū)е碌?#xff09;:
你可以定義多個(gè)command,并且給他們命不同的名字。
2 標(biāo)號(hào)圓圈數(shù)字的添加方式:\large{\textcircled{\small{1}}}\normalsize
參考:怎樣在LaTeX中方便輸入帶圓圈的數(shù)字
如果直接輸入標(biāo)號(hào)①,那么將解析不出來。
需要輸入這個(gè)公式\large{\textcircled{\small{1}}}\normalsize
,才可以完美的解析一個(gè)帶圓圈的數(shù)字序號(hào)。
3 快速掌握 Tikz 箭頭寫法:插入點(diǎn)+相對(duì)位移+標(biāo)號(hào)node
想要掌握寫法,我覺得可以通過以下兩張圖掌握。我標(biāo)了一些關(guān)鍵要素。
3.1 第一張圖:插入點(diǎn)+相對(duì)位移
看了底下那張圖和我的圖片說明,你們應(yīng)該能明白,它需要確定一個(gè)插入點(diǎn)以及知道每條邊是怎么做出來的。
- 橙色的箭頭代表新定義的 command,以及它的引用方式。可以看到,我們首先定義了一個(gè) command,叫做 DrawArrow,然后在下面的 list 代碼段中引用了它,并用特殊符號(hào)
{**}
框起來。 - 藍(lán)色的箭頭代表箭頭的位置信息??梢钥吹酱a中的(0,0)意味著實(shí)際渲染結(jié)果中的坐標(biāo)原點(diǎn),坐標(biāo)原點(diǎn)就等同于在代碼中的插入點(diǎn)。
- 綠色的數(shù)字(在pdf里面)代表了相對(duì)位移,可以看到我這個(gè)代碼里面是從(0,0)點(diǎn)要求向右移動(dòng)4個(gè)單位作第一條邊,然后向下移動(dòng)一個(gè)單位,再向左移動(dòng)一個(gè)單位做第二、三條邊。
3.2 第二張圖:標(biāo)號(hào)node
看到這張圖,你們應(yīng)該能明白這個(gè)標(biāo)號(hào)是怎么標(biāo)在這個(gè)圖片上的。
-
node的參數(shù):下圖中綠色的圓圈圈出來了 node 的兩個(gè)參數(shù),xshift 和 yshift 是可以用來偏移標(biāo)號(hào)的位置的,它可以讓標(biāo)號(hào)處于一個(gè)更加合適的位置,免得擋住了什么。
-
node的添加方式:node 是添加在一個(gè)節(jié)點(diǎn)的后面的,只要加一個(gè)空格就能加上去。對(duì)比第一張圖和第二張圖,你們應(yīng)該能看到我把 node 的位置移動(dòng)了:在第一張圖中,node 的位置是在第三條邊的起點(diǎn),而在這一張圖中,node 的位置變成了第一條邊的上方。總之,當(dāng)你們想要加在不同的邊上時(shí)可以把它放在其他的節(jié)點(diǎn)的后面,它的位置和這個(gè)邊的真正的對(duì)應(yīng)關(guān)系,沒必要琢磨的那么清楚,反正代碼能用就行。
4 警惕莫名其妙的GPT代碼:pic cs:start#1-start
我讓 GPT 來生成代碼的時(shí)候,它生成的不太對(duì)勁,如下圖所示,包含了這種([yshift=0.5ex]#1-1-1.west)
代碼,讓我誤以為我可以指定代碼行。雖然確實(shí)是我先提問,讓他在第一行到第三行加箭頭的。但是他的代碼中的這個(gè)標(biāo)號(hào)實(shí)際上毫無用處,我也不知道他是怎么使用的。這個(gè)地方用坐標(biāo)可以用,但是用行標(biāo)好像是用不了的,而且也和插入點(diǎn)毫無關(guān)系。
完整代碼
這里貼出能夠?qū)崿F(xiàn)前言里面貼出來的那張圖的代碼。
\documentclass{article}
\usepackage{listings}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}% Define a new command to draw an arrow from the first line to the third line with a label ①
\newcommand{\DrawArrow}[1]{\begin{tikzpicture}[remember picture, overlay]\draw[->, thick, red, >=Stealth] ([yshift=0.5em](0,0) -- ++(4,0) node[midway, left, xshift=2em,yshift=1em]{\large{\textcircled{\small{1}}}\normalsize} -- ++(0,-1)-- ++(-1,0) ;\end{tikzpicture}
}% Define another command to draw an arrow from the first line to the third line with a label ②
\newcommand{\DrawArrowTwo}[1]{\begin{tikzpicture}[remember picture, overlay]\draw[->, thick, blue, >=Stealth] ([yshift=0.5em](0,0) -- ++(4,0) node[midway, left, xshift=2em,yshift=1em]{\large{\textcircled{\small{2}}}\normalsize} -- ++(0,-1)-- ++(-1,0) ;\end{tikzpicture}
}\begin{document}\begin{lstlisting}[escapeinside={(*}{*)}]
int main() {(*\DrawArrow{lstlisting}*)printf("Hello, World!\n");(*\DrawArrowTwo{lstlisting}*)return 0;
}
\end{lstlisting}\end{document}
效果如下:
本賬號(hào)所有文章均為原創(chuàng),歡迎轉(zhuǎn)載,請(qǐng)注明文章出處:https://blog.csdn.net/qq_46106285/article/details/140330868。百度和各類采集站皆不可信,搜索請(qǐng)謹(jǐn)慎鑒別。技術(shù)類文章一般都有時(shí)效性,本人習(xí)慣不定期對(duì)自己的博文進(jìn)行修正和更新,因此請(qǐng)?jiān)L問出處以查看本文的最新版本。