我想画这个:
我的 xy-pic 代码是
\[
\xy
@={(0,0),(10,0),(10,10),(0,10)},
{\ar@{-}^{f_1}|{\dir{>}} s0;s1},
{\ar@{-}^{f_2}|{\dir{>}} s1;s2},
{\ar@{-}^{f_3}|{\dir{>}} s2;s3},
{\ar@{-}^{f_4}|{\dir{>}} s3;s0},
\endxy
\]
我可以使用函数@@
来简化上述代码吗?例如,代码
\[
\xy
@={(0,0),(10,0),(10,10),(0,10)},
s0="prev",
@@{;"prev";**@{-}="prev"}
\endxy
\]
给出没有箭头和 f 的输出。
答案1
TikZ 的实现代码非常简单:
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}[-stealth,line cap=rect]
\draw(0,0) |- (1,1) node[above]{$f_1$};
\draw(1,1) -| (2,0) node[right]{$f_2$};
\draw(2,0) |- (1,-1) node[below]{$f_3$};
\draw(1,-1) -| (0,0) node[left]{$f_4$};
\end{tikzpicture}
\end{document}
答案2
PSTricks 解决方案,您可以在其中控制图表中的边长(通过更改的值\Length
):
\documentclass{article}
\usepackage{pstricks-add}
\usepackage{xfp}
\newcommand*\halfLength{\fpeval{\Length/2}}
\newcommand*\maximum{\fpeval{\Length+0.5}}
\def\Length{5}
\begin{document}
\begin{pspicture}(-0.5,-0.5)(\maximum,\maximum)
\psline[
ArrowInside = ->,
ArrowInsidePos = 0.52,
arrowscale = 1.5
](0,0)(0,\Length)(\Length,\Length)(\Length,0)(0,0)
\uput[ 90](\halfLength,\Length){$f_{1}$}
\uput[ 0](\Length,\halfLength){$f_{2}$}
\uput[270](\halfLength,0){$f_{3}$}
\uput[180](0,\halfLength){$f_{4}$}
\end{pspicture}
\end{document}
请注意,我没有选择ArrowInsidePos = 0.5
,而是ArrowInsidePos = 0.52
因为这提供了更好的箭头位置(从视觉上来说),我想。