나는 큰 테이블(약 300개 항목)을 가지고 있습니다. 때로는 (특정 열에 대해) 동일한 값을 가진 일련의 항목이 있는 경우도 있습니다. 이런 경우에는 값을 생략해야 합니다. 내 모든 값은 다른 곳에서 사용되는 변수에 저장되므로 단순히 제거할 수는 없습니다. 이를 극복하기 위해 내 가치를 유지하기 위한 임시 명령을 만들었습니다. 내 솔루션을 일반 텍스트로 테스트하면 원하는 결과를 얻을 수 있습니다. 그러나 테이블에 솔루션을 적용하면 결과가 잘못되었습니다.
MWE(생략된 값의 위치를 더 잘 확인하기 위해 점을 표시했습니다):
\documentclass{article}
\usepackage{ifthen}
\begin{document}
\newcommand{\myval}{}
\newcommand{\setMyVal}[1]{\renewcommand{\myval}{#1}}
\newcommand{\printOnlyFirstOccurence}[1]{
\ifthenelse{\equal{\myval}{#1}}
{.}
{\setMyVal{#1}\myval}%else
}
Outside table:
\printOnlyFirstOccurence{a}
\printOnlyFirstOccurence{a}
\printOnlyFirstOccurence{b}
\printOnlyFirstOccurence{b}
\printOnlyFirstOccurence{b}
Behaviour inside table:
\begin{table}[h!]
\centering
\begin{tabular}{c|c} \hline
\printOnlyFirstOccurence{a} & a \\ \hline
\printOnlyFirstOccurence{a} & a \\ \hline
\printOnlyFirstOccurence{b} & b \\ \hline
\printOnlyFirstOccurence{b} & b \\ \hline
\printOnlyFirstOccurence{b} & b \\ \hline
\end{tabular}
\end{table}
\end{document}
위의 예에서는 테이블 외부에서 다음을 얻었습니다.
ㅏ . 비. . .
내가 얻은 테이블 내부 :
에 . . .
누군가 이 동작을 설명할 수 있나요?
답변1
\myval
정렬 셀은 그룹을 형성하므로 다른 셀로 이동하자마자 재정의가 잊어집니다. 의 정의에 \gdef\myval{.}
대신 사용하십시오 . 당신 과 함께라면 지역적 재정의만 얻을 수 있습니다.\renewcommand{\myval}{#1}
\setMyVal
\renewcommand
\documentclass{article}
\usepackage{ifthen}
\begin{document}
\newcommand{\myval}{}
\newcommand{\setMyVal}[1]{\gdef\myval{#1}}
\newcommand{\printOnlyFirstOccurence}[1]{
\ifthenelse{\equal{\myval}{#1}}
{.}
{\setMyVal{#1}\myval}%else
}
Outside table:
\printOnlyFirstOccurence{a}
\printOnlyFirstOccurence{a}
\printOnlyFirstOccurence{b}
\printOnlyFirstOccurence{b}
\printOnlyFirstOccurence{b}
Behaviour inside table:
\begin{table}[h!]
\centering
\begin{tabular}{c|c} \hline
\printOnlyFirstOccurence{a} & a \\ \hline
\printOnlyFirstOccurence{a} & a \\ \hline
\printOnlyFirstOccurence{b} & b \\ \hline
\printOnlyFirstOccurence{b} & b \\ \hline
\printOnlyFirstOccurence{b} & b \\ \hline
\end{tabular}
\end{table}
\end{document}