2015-01-22 3 views
0

원하는 높이로 조정할 수있는 격자 명령이 필요합니다. 여기에 내가 무슨 짓을했는지입니다 : 내가 호출 할 경우, 예를 들어, \vhlines{16} 내가 수직 라인 상단에 너무 오래 찾을 newcommand 블록의 선택적 매개 변수로 어떻게 계산할 수 있습니까?

\newcommand{\vhlines}[1]{ 
    \hspace{1em} 
    \setlength{\unitlength}{0.75cm} 
    \begin{picture}(22,#1) 
     \color{lightgray} 
     \linethickness{0.075mm} 
     \multiput(0,0)(1,0){21} 
     {\line(0,1){#1}} % need to subtract 1 from #1 
     \multiput(0,0)(0,1){#1} 
     {\line(1,0){20}} 
    \end{picture} 
} 

. 주석이있는 줄에 #1 대신 15을 쓰면 올바른 것입니다.

우아한 방법이 있나요?

답변

1

당신은 \numexpr를 사용하여 기본 숫자 (정수) 식을 수행 할 수 있습니다

enter image description here

\documentclass{article} 
\usepackage{xcolor} 
\newcommand{\vhlines}[1]{% 
    \hspace{1em}% 
    \setlength{\unitlength}{0.75cm}% 
    \begin{picture}(22,#1) 
    \color{lightgray} 
    \linethickness{0.075mm} 
    \multiput(0,0)(1,0){21} 
     {\line(0,1){\numexpr#1-1}} 
    \multiput(0,0)(0,1){#1} 
     {\line(1,0){20}} 
    \end{picture} 
} 
\begin{document} 

\noindent 
\vhlines{4} 

\end{document} 

또는 더 복잡한 표현을 위해, 당신의 프리앰블에 추가

\usepackage{xparse} 
\ExplSyntaxOn 
    \cs_new_eq:NN \calc \fp_eval:n 
\ExplSyntaxOff 

을 허용 것이다 \calc{<your numerical expression>}을 사용하십시오.

관련 문제