![\draw[Ruler] 如何讓 \ifnum\n=XYZ 畫得更長或更短](https://rvso.com/image/420272/%5Cdraw%5BRuler%5D%20%E5%A6%82%E4%BD%95%E8%AE%93%20%5Cifnum%5Cn%3DXYZ%20%E7%95%AB%E5%BE%97%E6%9B%B4%E9%95%B7%E6%88%96%E6%9B%B4%E7%9F%AD.png)
請考慮以下程式碼:
% Y-ruler
\newcommand\yRuler[5]{
\path let \p1=($(#1)-(#2)$) in
\pgfextra{ \pgfmathsetlengthmacro{\RasterboxesHeight}{veclen(\x1,\y1)} }
[savevalue={\h}{\RasterboxesHeight}];
\pgfmathsetmacro\NoYdiv{\h/\u} % Number of y divisions
\draw[Ruler] (#1) coordinate(Y) -- (#2);
\foreach \n in {0,1,...,\NoYdiv}{%%
\draw[Ruler] ([yshift=\n*\u]Y) -- +(#4,0) node[#3, inner sep=1pt]{
\ifnum\n=1 \n\,cm \else \n\fi};
}%%
\foreach \n in {0.1,0.2,...,\NoYdiv}{%%
\draw[] ([yshift=\n*\u]Y) -- +(#5,0);
}%%
}
它輸出這樣的東西(在這種情況下有 2 個 Y 標尺):
\yRuler{LLM}{ULM}{right}{4mm}{2mm}
\yRuler{LRM}{URM}{left}{-4mm}{-2mm}
正如人們所看到的,1公分已經完美重疊了。
如果還有的話那就太好了0它們下面的 s 可以完美重疊,以及2s 和3上面。
我們如何調整上面的程式碼來實現這個結果?也就是說,使\draw[Ruler]
除1?
不用擔心所需的確切 yshift,只要您可以輸入一些變數來玩,我會很高興。
答案1
這是一門將困難的問題分解為簡單的剪裁並為其提供最小工作範例的藝術,人們可以透過這些範例進行測試和嘗試(然後將其解決方案整合到更複雜的整體程式碼中)。
\documentclass[margin=5pt, tikz]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[]
\foreach \n in {1,...,5}{
\ifnum\n=3 \draw[yshift=-\n cm, red] (0,0) -- (4,0) node[right]{\n};
\else \draw[yshift=-\n cm] (0,0) -- (2,0) node[right]{\ifnum\n=1 \n~(it's one) \else \n\fi};
\fi}
\end{tikzpicture}
\end{document}