내 문서의 일부를 조건부로 '유령'하는 방법이 있습니까(동일한 '유령' 텍스트를 두 번 입력하지 않고)?
현재 나는 문서의 일부를 선택적으로 확장하기 위해 etoolbox 패키지, newtoggle/settoggle 및 iftoggle을 사용하고 있습니다.
\usepackage{etoolbox}
\begin{document}
\newtoggle{flag_name}
\settoggle{flag_name}{true}
\iftoggle{flag_name}{\phantom{long_text}}{long_text}
\end{document}
long_text가 길면 두 개의 매우 긴 텍스트 세그먼트가 있는데, 이는 디스크 크기에 비해 .tex 파일이 더 길어지고 커지기 때문에 바람직하지 않습니다. 나는 long_text를 두 번 입력하지 않고도 long_text를 '가짜'로 만드는 것이 가능한지 여부에 대해 고민했습니다.
나는 이와 같은 작업을 시도하고 있지만 LaTeX에서 중괄호 문자가 최종 문서의 일부인 중괄호 문자가 아닌 .tex 파일의 일부임을 인식하는 데 어려움을 겪고 있습니다.
\usepackage{etoolbox}
\begin{document}
\newtoggle{flag_name}
\settoggle{flag_name}{true}
\iftoggle{flag_name}
{
\phantom{}\{
}
{}
long_text
\iftoggle{flag_name}
{
\}
}
{}
\end{document}
논리적으로 나는 플래그가 true일 때마다 long_text 주위에 가상 중괄호를 가져오려고 노력하고 있습니다. 따라서 long_text는 항상 출력되지만 플래그의 진실 여부에 따라 팬텀이 그 주위에 나타납니다.
감사해요.
답변1
\phantom
또는 \relax
아무 작업 도 수행하지 않는 적절한 매크로를 삽입할 수 있습니다 .
\documentclass{article}
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\begin{document}
\newtoggle{flag_name}
\settoggle{flag_name}{true}
\iftoggle{flag_name}{\phantom}{\relax}{long text} short text \par
\settoggle{flag_name}{false}
\iftoggle{flag_name}{\phantom}{\relax}{long text} short text
\end{document}
이것이 작동하는 이유는 무엇입니까? \phantom
어떠한 인수도 취하지 않기 때문입니다 . 이는 마술이 일어나기 전의 "중간" 기능이므로 토글은 입력 스트림에 올바른 매크로를 삽입하기만 하면 됩니다. 텍스트를 중괄호로 지정했는지 확인하세요.~ 후에당신의 \iftoggle
.
Joseph Wright의 의견: \relax
여기를 사용하면 중괄호 세트가 남게 되어 수학 모드의 간격에 영향을 미칠 수 있습니다. \newcommand{\firtofone}[1]{#1}
그것을 정의하고 사용하는 것(또는 \makeatletter
을 사용하는 것 ) 이 더 안전할 것입니다 \@firstofone
.