
mdframe
인덱스 항목의 형식을 지정하기 위해 사용하려고 합니다 . \def\UseMdframeForFormatting{}
아래 MWE에서 (을 사용하려고 시도하는 ) 주석 처리를 제거하면 mdframe
오류가 발생합니다.
\@index의 사용이 해당 정의와 일치하지 않습니다.
암호:
%\def\UseMdframeForFormatting{}%
\documentclass{article}
\usepackage{mdframed}
\usepackage{imakeidx}
\usepackage{xparse}
\usepackage{hyperref}
\usepackage{bookmark}
\newcommand*\lettergroup[1]{\subsection{#1}}
\newcommand*{\IndexWithName}[2]{%
% #1 = word to index
% #2 = index name
\index[#2]{#1}%
}%
\newcommand*{\FormatIndexEntry}[1]{%
\ifdefined\UseMdframeForFormatting% <--- If this is defined, things no longer work
\begin{mdframed}[userdefinedwidth=0.5\linewidth]
\textcolor{red}{#1}%
\end{mdframed}%
\else
\textcolor{red}{#1}%
\fi
}%
\NewDocumentCommand{\AddIndexEntry}{%
O{}% #1 = index name
m% #2 = word to index this under
m% #3 = indexed term
}{%
\expandafter\IndexWithName\expandafter{%
#2!\FormatIndexEntry{#3}%
}{#1}%
}
\newcommand{\indexopt}[2]{\index[#2]{#1}}
\makeindex[title={Main Index},columns=1,program=texindy]
\makeindex[title={Name Index},columns=1,program=texindy,name=Name]
\indexsetup{level=\section}
\begin{document}
%% This works fine here, but not above to format index entry
\begin{mdframed}[userdefinedwidth=0.5\linewidth]
\textcolor{red}{foo}%
\end{mdframed}%
\AddIndexEntry[Name]{zero}{zero sum}
\clearpage
\setcounter{secnumdepth}{0}
%\printindex
\printindex[Name]
\end{document}
답변1
가 아니라 mdframed
를 사용하면 tcolorbox
작동합니다 . 에드 \begin{tcolorbox}
라면 작동합니다. \protect
의 스타일은 실제로 tcolorbox
적용되어야 합니다 \newtcolorbox
.
\def\UseMdframeForFormatting{}%
\documentclass{article}
\usepackage{mdframed}
\usepackage[most]{tcolorbox}
\usepackage{imakeidx}
\usepackage{xparse}
\usepackage{hyperref}
\usepackage{bookmark}
\newcommand*\lettergroup[1]{\subsection{#1}}
\newcommand*{\IndexWithName}[2]{%
% #1 = word to index
% #2 = index name
\index[#2]{#1}%
}%
\makeatletter
\newcommand{\FormatIndexEntry}[1]{%
\@ifundefined{UseMdframeForFormatting}{% <--- If this is defined, things no longer wor
\textcolor{red}{#1}%
}{%
\protect\begin{tcolorbox}[colframe={gray},nobeforeafter,box align=center,sharp corners,width=0.5\linewidth]%
\protect\textcolor{red}{#1}%
\protect\end{tcolorbox}%
}%
}%
\makeatother
\NewDocumentCommand{\AddIndexEntry}{%
O{}% #1 = index name
m% #2 = word to index this under
m% #3 = indexed term
}{%
\expandafter\IndexWithName\expandafter{%
#2!\FormatIndexEntry{#3}%
}{#1}%
}
\newcommand{\indexopt}[2]{\index[#2]{#1}}
\makeindex[title={Main Index},columns=1,program=texindy]
\makeindex[title={Name Index},columns=1,name=Name,program=texindy]
\indexsetup{level=\section}
\begin{document}
%% This works fine here, but not above to format index entry
\begin{mdframed}[userdefinedwidth=0.5\linewidth]\textcolor{red}{foo}\end{mdframed}%
\AddIndexEntry[Name]{zero}{zero sum}
%\index[Name]{zero}
\clearpage
\setcounter{secnumdepth}{0}
%\printindex
\printindex[Name]
\end{document}
업데이트
\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{imakeidx}
\usepackage{xparse}
\usepackage{hyperref}
\usepackage{bookmark}
\def\UseMdframeForFormatting{}%
\newcommand*\lettergroup[1]{\subsection{#1}}
\newcommand*{\IndexWithName}[2]{%
% #1 = word to index
% #2 = index name
\index[#2]{#1}%
}%
\newtcolorbox{indexentrybox}[1][]{%
nobeforeafter,
boxrule=0.5pt,
boxsep=0pt,
width=0.5\linewidth,
box align=center,
sharp corners,
colframe={gray},
coltext={red},
colback=white,
#1,
}%
\makeatletter
\newcommand{\FormatIndexEntry}[1]{%
\@ifundefined{UseMdframeForFormatting}{% <--- If this is defined, things no longer wor
\textcolor{red}{#1}%
}{%
\protect\begin{indexentrybox}
#1%
\protect\end{indexentrybox}
}%
}%
\makeatother
\NewDocumentCommand{\AddIndexEntry}{%
O{}% #1 = index name
m% #2 = word to index this under
m% #3 = indexed term
}{%
\expandafter\IndexWithName\expandafter{%
#2!\FormatIndexEntry{#3}}{#1}%
}
\newcommand{\indexopt}[2]{\index[#2]{#1}}
\makeindex[title={Main Index},columns=1,program=texindy]
\makeindex[title={Name Index},columns=1,name=Name,program=texindy]
\indexsetup{level=\section}
\begin{document}
Foo
\AddIndexEntry[Name]{zero}{zero sum}
\clearpage
\setcounter{secnumdepth}{0}
%\printindex
\printindex[Name]
\end{document}