\draw[Ruler] \ifnum\n=XYZ를 더 길거나 짧게 그리는 방법

\draw[Ruler] \ifnum\n=XYZ를 더 길거나 짧게 그리는 방법

다음 코드를 고려해보세요:

% 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위에 있어요.

이 결과를 얻기 위해 위의 코드를 어떻게 적용할 수 있을까요? 즉, 다음을 \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}

관련 정보