\documentclass{article}
\usepackage{pgfplots, pgfplotstable}
\usepackage{filecontents}
\usepackage{indentfirst}
\usepackage{amsmath}
\usepackage{float}
\usepackage{hhline}
\usepackage{multirow}
\usepackage{datatool}
\begin{filecontents}{data.dat}
28.7 28.4 43.4
0.2416 0.2415 nan
0.2420 0.2416 nan
0.2421 0.2416 nan
0.2416 0.2422 nan
0.2410 0.2422 nan
35.9 35.6 50.4
0.2695 0.2691 nan
0.2679 0.2691 nan
0.2691 0.2697 nan
0.2691 0.2691 nan
0.2686 0.2694 nan
42.6 42.3 57.4
0.2951 0.2953 nan
0.2950 0.2951 nan
0.2952 0.2956 nan
0.2951 0.2957 nan
0.2951 0.2954 nan
47.2 46.9 61.9
0.3091 0.3104 nan
0.3095 0.3107 nan
0.3106 0.3107 nan
0.3105 0.3110 nan
0.3107 0.3103 nan
51.3 51.1 66.1
0.3234 0.3231 nan
0.3231 0.3235 nan
0.3238 0.3233 nan
0.3229 0.3241 nan
0.3243 0.3230 nan
57.4 57.2 72.3
0.3417 0.3431 nan
0.3426 0.3431 nan
0.3422 0.3437 nan
0.3430 0.3427 nan
0.3429 0.3437 nan
\end{filecontents}
\pgfplotsset{compat=1.14}
\pgfplotstableread{data.dat}\Data
\begin{document}
\begin{table}
\title{Pendulum Data for Steel Ball}
\begin{tabular}{|l|l|l|l|} \hline
$d$ (cm) & $y$ (cm) & $\tau$ (s) & $\tau^2$ (s) \\\hhline{|=|=|=|=|}
\foreach \row in {0,...,35}
{
\newcount\countuno
\countuno=\row
\divide\countuno by 6
\multiply\countuno by 6
\ifnum\countuno=\row
\pgfplotstablegetelem{\row}{2}\of\Data \pgfmathsetmacro\dval{\pgfplotsretval}
\pgfplotstablegetelem{\row}{0}\of\Data \pgfmathsetmacro\yval{\pgfplotsretval}
\multirow{5}{*}{$\pgfmathprintnumber{\dval}$} & \multirow{5}{*}{$\pgfmathprintnumber{\yval}$}
\else
\pgfplotstablegetelem{\row}{0}\of\Data \pgfmathsetmacro\tval{\pgfplotsretval}
\pgfmathsetmacro\tsqrval{\tval ^ 2}
\advance\countuno by 1
\ifnum\countuno<\row
&
\fi
& $\pgfmathprintnumber{\tval}$ & $\pgfmathprintnumber{\tsqrval}$ \\\hline
\fi
}
\end{tabular}
\end{table}
\end{document}
エラーが発生します
! Missing \endgroup inserted.
<inserted text>
\endgroup
l.83 }
エラーがどこにあるのかわかりません。if ステートメントの構文をいじくり回してみましたが、問題の原因にはなっていないようです。また、私が知る限り、foreach ループも問題ないようです。おそらく、pgf コマンドと関係があるのでしょう。誰かが問題に気付いてくれたら本当に嬉しいです。
答え1
あるセルでループを開始し、別のセルで終了することはできません。
回避策としては、最初のセルにテーブルを構築し、すべてを一度に配信することです。
私は および jailed テーブルに反対なので\multirow
、 で実行する方法は次のとおりですbooktabs
。
\documentclass{article}
\usepackage{pgfplots, pgfplotstable}
\usepackage{filecontents}
\usepackage{amsmath}
\usepackage{booktabs}
\begin{filecontents}{\jobname.dat}
28.7 28.4 43.4
0.2416 0.2415 nan
0.2420 0.2416 nan
0.2421 0.2416 nan
0.2416 0.2422 nan
0.2410 0.2422 nan
35.9 35.6 50.4
0.2695 0.2691 nan
0.2679 0.2691 nan
0.2691 0.2697 nan
0.2691 0.2691 nan
0.2686 0.2694 nan
42.6 42.3 57.4
0.2951 0.2953 nan
0.2950 0.2951 nan
0.2952 0.2956 nan
0.2951 0.2957 nan
0.2951 0.2954 nan
47.2 46.9 61.9
0.3091 0.3104 nan
0.3095 0.3107 nan
0.3106 0.3107 nan
0.3105 0.3110 nan
0.3107 0.3103 nan
51.3 51.1 66.1
0.3234 0.3231 nan
0.3231 0.3235 nan
0.3238 0.3233 nan
0.3229 0.3241 nan
0.3243 0.3230 nan
57.4 57.2 72.3
0.3417 0.3431 nan
0.3426 0.3431 nan
0.3422 0.3437 nan
0.3430 0.3427 nan
0.3429 0.3437 nan
\end{filecontents}
\pgfplotsset{compat=1.14}
\pgfplotstableread{\jobname.dat}\Data
\newcount\countuno
\begin{document}
\begin{table}
\title{Pendulum Data for Steel Ball}
\begin{tabular}{llll}
\toprule
$d$ (cm) & $y$ (cm) & $\tau$ (s) & $\tau^2$ (s) \\
\midrule
\gdef\tablecontents{}%
\foreach \row in {0,...,35}
{%
\countuno=\row
\divide\countuno by 6
\multiply\countuno by 6
\ifnum\countuno=\row
\pgfplotstablegetelem{\row}{2}\of\Data
\pgfmathsetmacro\dval{\pgfplotsretval}%
\pgfplotstablegetelem{\row}{0}\of\Data
\pgfmathsetmacro\yval{\pgfplotsretval}%
\xdef\tablecontents{%
\unexpanded\expandafter{\tablecontents}%
\ifnum\row>0 \noexpand\midrule \fi
$\noexpand\pgfmathprintnumber{\dval}$ &
$\noexpand\pgfmathprintnumber{\yval}$
}%
\else
\pgfplotstablegetelem{\row}{0}\of\Data
\pgfmathsetmacro\tval{\pgfplotsretval}%
\pgfmathsetmacro\tsqrval{\tval ^ 2}%
\advance\countuno by 1
\xdef\tablecontents{%
\unexpanded\expandafter{\tablecontents}
\ifnum\countuno<\row &\fi
& $\noexpand\pgfmathprintnumber{\tval}$
& $\noexpand\pgfmathprintnumber{\tsqrval}$
\noexpand\\
}%
\fi
}%
\tablecontents
\bottomrule
\end{tabular}
\end{table}
\end{document}