나는 솔루션을 사용하고 있습니다siunitx 패키지를 사용하여 이진 단위로 인덱싱. 이는 제가 게시한 특정 문제를 해결했을 뿐만 아니라 다른 수많은 문제도 해결한 것 같습니다. 그러나 unexpanded
매개변수 에 큰따옴표가 있으면 약간의 어려움이 있는 것으로 보입니다.
Reading raw-index "/var/folders/70/.../T/N728p7zZMX"...
ERROR: READ: input stream #<CLOSED INPUT BUFFERED FILE-STREAM CHARACTER #P"/var/folders/70/.../T/N728p7zZMX" @3> ends within a string
여기서 ...
무작위로 생성된 경로가 있습니다.
MWE에는 참조된 질문의 솔루션에 한 줄만 추가되었습니다.
암호:
\documentclass{article}
\usepackage{imakeidx}
\usepackage{xparse}
\usepackage{siunitx}
\usepackage{xcolor}
%% https://tex.stackexchange.com/questions/50712/automatically-convert-quotations-in-the-form-of-abc-to-become-abc
\usepackage{csquotes}
\MakeOuterQuote{"}
\usepackage{hyperref}
\newcommand*\lettergroup[1]{\subsection{#1}}
\newcommand*{\IndexWithName}[2]{%
% #1 = word to index
% #2 = index name
\index[#2]{#1}%
}
\NewDocumentCommand{\FormatIndexEntry}{mm}{%
\textcolor{blue}{#1} #2%
}
%% Defer the binary units until AFTER \begin{document} as per
%% https://tex.stackexchange.com/questions/287579/how-to-overwrite-siunitxs-binary-prefixes
\sisetup{binary-units=true}
\AtBeginDocument{%
\DeclareSIUnit\bit{\textcolor{red}{bit}}%
}
\NewDocumentCommand{\AddIndexEntry}{%
O{}% #1 = index name
m% #2 = word to index this under
m% #3 = indexed term
m% #4 = symbol
}{%
\expandafter\IndexWithName\expandafter{%
#2!#3@\FormatIndexEntry{#3}{\unexpanded{\unexpanded{#4}}}%
}{#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}
\SI{1}{\bit}
\AddIndexEntry[Name]{Bytes}{Bit}{symbol: \si{\bit}}
\AddIndexEntry[Name]{Bytes}{Bit}{text using "quotes"}% <---- This is a problem.
\clearpage
\setcounter{secnumdepth}{0}
\printindex[Name]
\end{document}
답변1
해당 문자는 "
인덱스 파일에서 특수 문자이므로 다음과 같이 인용되어야 합니다.
""
반면에 "
LaTeX 문서에서는 단독으로 사용하면 안 되지만 다음과 함께 사용하면 괜찮습니다 csquotes
.
\documentclass{article}
\usepackage{imakeidx}
\usepackage{xparse}
\usepackage{siunitx}
\usepackage{xcolor}
\usepackage{csquotes}
\usepackage{hyperref}
\MakeOuterQuote{"}
\newcommand*\lettergroup[1]{\subsection{#1}}
\newcommand*{\IndexWithName}[2]{%
% #1 = word to index
% #2 = index name
\index[#2]{#1}%
}
\NewDocumentCommand{\FormatIndexEntry}{mm}{%
\textcolor{blue}{#1} #2%
}
%% Defer the binary units until AFTER \begin{document} as per
%% http://tex.stackexchange.com/questions/287579/how-to-overwrite-siunitxs-binary-prefixes
\sisetup{binary-units=true}
\AtBeginDocument{%
\DeclareSIUnit\bit{\textcolor{red}{bit}}%
}
\NewDocumentCommand{\AddIndexEntry}{%
O{}% #1 = index name
m% #2 = word to index this under
m% #3 = indexed term
m% #4 = symbol
}{%
\expandafter\IndexWithName\expandafter{%
#2!#3@\FormatIndexEntry{#3}{\unexpanded{\unexpanded{#4}}}%
}{#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}
\SI{1}{\bit}
\AddIndexEntry[Name]{Bytes}{Bit}{symbol: \si{\bit}}
\AddIndexEntry[Name]{Bytes}{Bitq}{text using ""quotes""}% <---- This is a problem.
\clearpage
\setcounter{secnumdepth}{0}
\printindex[Name]
\end{document}