我创建了两个不同的表格内容,想用 newif 进行切换,但\AAAfalse
没有效果。我该怎么办?
\documentclass[a4paper, landscape]{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\pgfplotstableset{string type, col sep=comma, header=false}
\newif\ifAAA
\AAAtrue
\ifAAA%================================
\pgfplotstableread[header=false]{
A, A
A, A
A, A
}\mytable
\def\mycolor{red}
\else%==================================
\pgfplotstableread[header=false]{
B, B
B, B
B, B
}\mytable
\def\mycolor{blue}
\fi%=====================================
\begin{document}
\section{\color{\mycolor} AAA true :)}
\pgfplotstabletypeset[]{\mytable}
\AAAfalse
\section{\color{\mycolor} AAA false :(}
\pgfplotstabletypeset[]{\mytable}
\end{document}
答案1
当您切换时,\ifAAA
您已经读取了表格;宏\mytable
已经定义,不会改变。一种可能性是使表格的加载动态化(我必须更改终止符,因为当进入宏时,换行符会更改为空格标记,这会使内联表格不可读):
\documentclass[a4paper, landscape]{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\pgfplotstableset{string type, col sep=comma, header=false}
\newif\ifAAA
\AAAtrue
\def\loadtable{%
\ifAAA
\pgfplotstableread[header=false, row sep=crcr]{%
A, A \\
A, A \\
A, A \\
}\mytable
\def\mycolor{red}%
\else
\pgfplotstableread[header=false, row sep=crcr]{%
B, B \\
B, B \\
B, B \\
}\mytable
\def\mycolor{blue}%
\fi}
\begin{document}
\loadtable
\section{\color{\mycolor} AAA true :)}
\pgfplotstabletypeset[]{\mytable}
\AAAfalse
\loadtable
\section{\color{\mycolor} AAA false :(}
\pgfplotstabletypeset[]{\mytable}
\end{document}
当然还有更优雅的解决方案,比如定义两个表并打开加载开关,但我对\expandafter
s 感到迷失了(我应该认真学习更多 LaTeX3)。