어떤 것을 계산할 때 때때로 pgf
시스템의 중간 결과가 커집니다. fpu
라이브러리를 사용할 수 있습니다. TikZ & PGF
매뉴얼 (627 페이지 참조), 여기 및 여기 이지만 여전히이 오류가 발생합니다.
Paragraph ended before `\pgfflt@readlowlevelfloat` was complete.
무슨 문제인가요?
코드는 다음과 같습니다.
\documentclass{scrartcl} \usepackage{tikz} \usetikzlibrary{fpu} \begin{document} %data values: \def\RTable{{100,100.391,100.781,101.172,101.562,101.953,102.343,102.733,103.123,103.513,103.903,104.292,104.682,105.071,105.46,105.849,106.238,106.627,107.016,107.405,107.794,108.182,108.57,108.959,109.347,109.735,110.123,110.51,110.898,111.286,111.673,112.06,112.447,112.835,113.221,113.608,113.995,114.382,114.768,115.155,115.541,115.927,116.313,116.699,117.085,117.47,117.856,118.241,118.627,119.012,119.397,119.782,120.167,120.552,120.936,121.321,121.705,122.09,122.474,122.858,123.242,123.626,124.009,124.393,124.777,125.16,125.543,125.926,126.309,126.692,127.075,127.458,127.84,128.223,128.605,128.987,129.37,129.752,130.133,130.515,130.897}} %prints the result to the console: \pgfkeys{/pgf/fpu} \foreach \i in {0, ..., 80} { \pgfmathparse{abs(\RTable[\i] - 100 - 3.0897 / 8 * \i)}\i, \pgfmathresult\\ } \pgfkeys{/pgf/fpu=false} \end{document}
업데이트 :
여기 의 매크로를 사용하고 있습니다 ( Schrödinger의 고양이 ). 내 MWE 참조 :
\documentclass{scrartcl} \usepackage{tikz} \usetikzlibrary{fpu} \newcommand\pgfmathparseFPU[1]{ \begingroup \pgfkeys{ /pgf/fpu, /pgf/fpu/output format = fixed } \pgfmathparse{#1} \pgfmathsmuggle \pgfmathresult \endgroup} \begin{document} %data values: \def\UABmValues{{14.9, 15.8, 17.7, 18.3, 19, 20, 21.1, 22.2, 24.3, 26.9, 30.1}} %prints the result to the console: \foreach[count = \i from 0] \k in {30, 35, ..., 80} { \pgfmathparseFPU{-25500 / (\UABmValues[\i] / 1000 - 255 / 52) - 5200 - 3.0897 / 8 * \k}\i, \pgfmathresult\\ } \end{document}
그래도
Paragraph ended before `\pgfflt@readlowlevelfloat` was complete.
오류가 발생합니다. 내가 뭘 잘못 했니?
도움과 노력에 미리 감사드립니다!
댓글
Answer
LaTeX3 FPU의 직업처럼 들립니다 :
\documentclass{article} \usepackage{expl3} \ExplSyntaxOn \cs_new_eq:NN \fpeval \fp_eval:n \cs_new_eq:NN \clistitem \clist_item:Nn \cs_new_eq:NN \foreachint \int_step_inline:nnnn \ExplSyntaxOff \begin{document} %data values: \def\RTable{100,100.391,100.781,101.172,101.562,101.953,102.343,102.733,103.123,103.513,103.903,104.292,104.682,105.071,105.46,105.849,106.238,106.627,107.016,107.405,107.794,108.182,108.57,108.959,109.347,109.735,110.123,110.51,110.898,111.286,111.673,112.06,112.447,112.835,113.221,113.608,113.995,114.382,114.768,115.155,115.541,115.927,116.313,116.699,117.085,117.47,117.856,118.241,118.627,119.012,119.397,119.782,120.167,120.552,120.936,121.321,121.705,122.09,122.474,122.858,123.242,123.626,124.009,124.393,124.777,125.16,125.543,125.926,126.309,126.692,127.075,127.458,127.84,128.223,128.605,128.987,129.37,129.752,130.133,130.515,130.897} %prints the result to the console: \foreachint{1}{1}{81}{% #1, \fpeval{abs(\clistitem\RTable{#1} - 100 - 3.0897 / 8 * (#1 - 1))}\\ } \end{document}
(expl3
은 가장 일반적인 사용 사례 인 조판과 일치하므로 1부터 인덱싱하는 것입니다. 따라서 목록을 1부터 인덱싱했지만 방정식 자체에 대해 0부터 인덱싱했습니다.)
Comments
- @Joseph Wright 안녕하세요! 답변 해 주셔서 감사합니다. 테스트했습니다. 1. 물론 작동하지만 색인 변수는 0으로 시작해야합니다. 나의 특별한 목적). 2. 답변의 결과가 다릅니다. 올바른 결과는 아래쪽 포물선처럼 보여야합니다. 여기 를 참조하세요. 답변의 결과가 위쪽으로 열린 포물선처럼 보입니다. 내가 뭔가 잘못했을 수도 있습니다. 3. 어쨌든 ' 내 질문에 대답하십시오 (위 링크 참조). 무슨 말을 하시나요?
- @ Su-47 ' 링크에 대해 무슨 뜻인지 모르겠습니다. ' 위 '
- 점 2의 링크 일 가능성이 높습니다 ( tex.stackexchange.com/questions/348739/ … ).
- 안녕하세요 @Joseph Wright 및 @Torbj ø rn T.! 오래간만에 죄송합니다. 귀하의 의견에 감사드립니다. Torbj ø rn T. 맞습니다. 이 링크 를 의미했습니다. 이제 결과는 옳습니다. 그러나 마지막 댓글에서 말했듯이 ' 위 답변을 사용하여 다른 질문을 해결할 수 없습니다 (위 링크 참조). 현재 올바르게 이해하면
TikZ
에서 배열과fpu
를 함께 사용할 방법이 없습니까? 다른 솔루션이 있습니까, 아마도 배열과 같은 다른 데이터 구조입니까?
\pgfkeys{pgf/fpu=false}
는 최근에 수정하지 않는 한 주석에 표시된대로하지 않습니다.\foreach[count = \i from 0] \k in {30, 35, ..., 80} { \pgfmathsetmacro{\myval}{\UABmValues[\i]} \pgfmathparseFPU{-25500/(\myval/1000-255/52)-5200-3.0897/8*\k}\i, \pgfmathresult\\ }
작동합니다. 현재fpu
는 정수 조작 및 이러한 종류의 목록 추출을 포함한 몇 가지 항목을 지원하지 않습니다. 따라서fpu
없이 항목을 추출해야합니다.