![\draw[Lineal] Wie kann man \ifnum\n=XYZ länger oder kürzer zeichnen?](https://rvso.com/image/420272/%5Cdraw%5BLineal%5D%20Wie%20kann%20man%20%5Cifnum%5Cn%3DXYZ%20l%C3%A4nger%20oder%20k%C3%BCrzer%20zeichnen%3F.png)
Bitte beachten Sie den folgenden Code:
% 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);
}%%
}
Das Ergebnis ist etwa wie folgt (in diesem Fall gibt es zwei Y-Lineale):
\yRuler{LLM}{ULM}{right}{4mm}{2mm}
\yRuler{LRM}{URM}{left}{-4mm}{-2mm}
Wie man sehen kann,1 cmüberlappt sich bereits perfekt.
Es wäre toll, wenn auch die0s darunter könnten sich perfekt überlappen, ebenso wie die2s und die3s oben.
Wie könnten wir den obigen Code anpassen, um dieses Ergebnis zu erreichen? Das heißt, wir könnten die \draw[Ruler]
Striche für alle Zahlen außer1?
Machen Sie sich keine Gedanken über die genaue erforderliche Y-Verschiebung. Solange Sie eine Variable zum Spielen eingeben können, bin ich sehr zufrieden.
Antwort1
Es ist die Kunst, schwierige Probleme in einfache Ausschnitte zu zerlegen und dafür funktionierende Minimalbeispiele zu geben, mit denen man testen und ausprobieren kann (und seine Lösungen dann in den komplexeren Gesamtcode integriert).
\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}