![\draw[定規] \ifnum\n=XYZ を長くまたは短く描画する方法](https://rvso.com/image/420272/%5Cdraw%5B%E5%AE%9A%E8%A6%8F%5D%20%5Cifnum%5Cn%3DXYZ%20%E3%82%92%E9%95%B7%E3%81%8F%E3%81%BE%E3%81%9F%E3%81%AF%E7%9F%AD%E3%81%8F%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.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}
ご覧の通り、1cmすでに完璧に重なっています。
また、0それらの下にあるsは完全に重なり合うことができ、2と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}