를 사용하여 삼각값 테이블을 함께 넣을 수 있었습니다 expl3
. 그러나 모든 값이 소수점 이하 4자리가 되도록 끝에 0을 채우고 싶습니다. 이를 수행하는 간단한 방법이 있습니까? expl3
아니면 이를 처리하기 위해 자체 매크로를 구축해야 합니까?
이것은 제가 방금 게시한 비슷한 질문과 관련이 있습니다.삼각 함수에 대한 pgfmath의 정밀도를 향상시키는 간단한 방법이 있습니까?
내 MWE는 다음과 같습니다.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\def\mynum{0}
\def\myvoffset{0pt}
\usepackage{xparse}
\ExplSyntaxOn
\def\aetan#1{\fp_eval:n { round ( tand ( #1 ), 4 )}}
\def\aesin#1{\fp_eval:n { round ( sind ( #1 ), 4 )}}
\def\aecos#1{\fp_eval:n { round ( cosd ( #1 ), 4 )}}
\def\aemod#1{\fp_eval:n { #1 - round0 ( #1 / 5 , 0 ) * 5}}
\ExplSyntaxOff
\usepackage[margin=0.5in]{geometry}
\begin{document}
Using \LaTeX3
\begin{tikzpicture}
\coordinate(UL) at (0,0);
\node at (UL) {Degrees};
\node[anchor=west] at ($(UL.west)+(1cm,0)$) {$\sin$};
\node[anchor=west] at ($(UL.west)+(2.75cm,0)$) {$\cos$};
\node[anchor=west] at ($(UL.west)+(4.50cm,0)$) {$\tan$};
\foreach \myn in {1,2,3,...,45}
{
\ifnum\aemod{(\myn-1)}=0\relax
\xdef\myvoffset{\dimexpr\myvoffset+1.350\baselineskip}%%
\else
\xdef\myvoffset{\dimexpr\myvoffset+1.00\baselineskip}%%
\fi
\coordinate (DEG/\myn) at ($(UL.west)-(0,\myvoffset)$);
\coordinate (DEG/S/\myn) at ($(DEG/\myn)+(1cm,0)$);
\coordinate (DEG/C/\myn) at ($(DEG/S/\myn)+(1.75cm,0)$);
\coordinate (DEG/T/\myn) at ($(DEG/C/\myn)+(1.75cm,0)$);
\node[anchor=east] at (DEG/\myn) {$\myn^\circ$};
\node[anchor=west] at (DEG/S/\myn) {\texttt{\aesin{\myn}}};
\node[anchor=west] at (DEG/C/\myn) {\texttt{\aecos{\myn}}};
\node[anchor=west] at (DEG/T/\myn) {\texttt{\aetan{\myn}}};
}
\end{tikzpicture}
\end{document}
답변1
해결책을 찾았지만 expl3
해결책은 아닙니다. 나는 siunitx
다음과 같이 패키지를 사용합니다 :
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{siunitx}
\sisetup{add-decimal-zero,
round-precision=4,
round-mode=places,
round-integer-to-decimal,
detect-all}
\def\mynum{0}
\def\myvoffset{0pt}
\usepackage{xparse}
\ExplSyntaxOn
\def\aetan#1{\num{\fp_eval:n { round ( tand ( #1 ), 4 )}}}
\def\aesin#1{\num{\fp_eval:n { round ( sind ( #1 ), 4 )}}}
\def\aecos#1{\num{\fp_eval:n { round ( cosd ( #1 ), 4 )}}}
\def\aemod#1{\fp_eval:n { #1 - round0 ( #1 / 5 , 0 ) * 5}}
\ExplSyntaxOff
\usepackage[margin=0.5in]{geometry}
\begin{document}
Using \LaTeX3
\begin{tikzpicture}
\coordinate(UL) at (0,0);
\node at (UL) {Degrees};
\node[anchor=west] at ($(UL.west)+(1cm,0)$) {$\sin$};
\node[anchor=west] at ($(UL.west)+(2.75cm,0)$) {$\cos$};
\node[anchor=west] at ($(UL.west)+(4.50cm,0)$) {$\tan$};
\foreach \myn in {1,2,3,...,45}
{
\ifnum\aemod{(\myn-1)}=0\relax
\xdef\myvoffset{\dimexpr\myvoffset+1.350\baselineskip}%%
\else
\xdef\myvoffset{\dimexpr\myvoffset+1.00\baselineskip}%%
\fi
\coordinate (DEG/\myn) at ($(UL.west)-(0,\myvoffset)$);
\coordinate (SIN/\myn) at ($(DEG/\myn)+(1cm,0)$);
\coordinate (COS/\myn) at ($(SIN/\myn)+(1.75cm,0)$);
\coordinate (TAN/\myn) at ($(COS/\myn)+(1.75cm,0)$);
\node[anchor=east] at (DEG/\myn) {$\myn^\circ$};
\node[anchor=west] at (SIN/\myn) {\texttt{\aesin{\myn}}};
\node[anchor=west] at (COS/\myn) {\texttt{\aecos{\myn}}};
\node[anchor=west] at (TAN/\myn) {\texttt{\aetan{\myn}}};
}
\end{tikzpicture}
\end{document}