表格中的 fp 对齐

表格中的 fp 对齐

有人能解释为什么这两个条目的输出不同吗?有人知道如何使第二个与第一个匹配吗?

\documentclass{article}
\include{fp}
\newcommand\entryOne[1]{
\ifnum #1 = 100 #1 \fi
}
\newcommand\entryTwo[1]{
\FPeval{\result}{#1}
\ifnum \result = 100 \result \fi
}
\begin{document}
\begin{table}
\centering
\begin{tabular}{|l|c|}
\hline
Entry 1 & \entryOne{100} \\
Entry 2 & \entryTwo{100} \\
\hline
\end{tabular}
\end{table}
\end{document}

我美丽的桌子

提前致谢。

答案1

TeX 不是“自由形式”,空格很重要:请记住它是一个排版程序。

您的命令中有几个空格:

\newcommand\entryOne[1]{
\ifnum #1 = 100 #1 \fi
}

括号后的行尾算作空格;第二个#1括号后的空格也算。在表格单元格中,这两者都会被删除,但这并不是在定义中包含它们的好理由。固定定义:

\newcommand\entryOne[1]{%
  \ifnum #1 = 100 #1\fi
}

请注意,第一个空格后的空格#1将被语法规则忽略,例如 后的空格100

第二个定义:

\newcommand\entryTwo[1]{
\FPeval{\result}{#1}
\ifnum \result = 100 \result \fi
}

后面有一个空格{,第二行末尾也有一个空格。这个空格没有被删除,因为它不在单元格的开头,导致单元格包含<space>100,这解释了错位。

固定定义:

\newcommand\entryTwo[1]{%
  \FPeval{\result}{#1}%
  \ifnum \result = 100 \result \fi
}

请注意,读取过程中会忽略控制序列后的空格。

最后的评论:\include{fp}是错误的,应该是\usepackage{fp};我使用的缩进使替换文本的开始和结束位置更清晰。

\documentclass{article}
\usepackage{fp}

\newcommand\entryOne[1]{%
  \ifnum #1 = 100 #1\fi
}
\newcommand\entryTwo[1]{%
  \FPeval{\result}{#1}%
  \ifnum \result = 100 \result \fi
}
\begin{document}
\begin{table}
\centering
\begin{tabular}{|l|c|}
\hline
Entry 1 & \entryOne{100} \\
Entry 2 & \entryTwo{100} \\
\hline
\end{tabular}
\end{table}
\end{document}

在此处输入图片描述

相关内容