![siunitx 패키지를 사용하여 이진 단위로 인덱싱](https://rvso.com/image/327774/siunitx%20%ED%8C%A8%ED%82%A4%EC%A7%80%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9D%B4%EC%A7%84%20%EB%8B%A8%EC%9C%84%EB%A1%9C%20%EC%9D%B8%EB%8D%B1%EC%8B%B1.png)
에 따라siunitx의 바이너리 접두사를 덮어쓰는 방법, 바이너리 접두사에 대한 모든 변경 사항은 다음으로 연기되어야 합니다.~ 후에 \begin{document}
. 그러나 인덱스에서 동일한 이진 접두사를 사용하는 경우 프리앰블에서 동일한 선언을 반복해야 하는 것 같습니다. 이 문제를 처리하고 동일한 선언을 반복할 필요가 없는 올바른 방법이 무엇인지 결정하려고 합니다.
문제를 보려면 다음으로 표시된 줄을 주석 처리하세요.
< ---- This needs to be repeated
대신 \AtBeginDocument
선언이 제거되면 단위가 bit
더 이상 빨간색으로 표시되지 않습니다.
노트:
- 의 마지막 매개변수에 있는 수학 콘텐츠와 관련된 몇 가지 다른 문제가 있으며
\AddIndexEntry
이것이 "강건화"/확장과 관련되어 있다고 확신합니다. 따라서 이 예에서 이것이 명백하다면 유사한 질문을 추가로 게시하는 시간을 절약할 수 있습니다. 이 특정 질문은 특히siunitx
바이너리 접두사 와 관련이 있다는 점에서 구별됩니다 .
암호:
\documentclass{article}
\usepackage{imakeidx}
\usepackage{xparse}
\usepackage{siunitx}
\usepackage{xcolor}
\usepackage{hyperref}
\newcommand*\lettergroup[1]{\subsection{#1}}
\newcommand*{\IndexWithName}[2]{%
% #1 = word to index
% #2 = index name
\index[#2]{#1}%
}%
\newcommand*{\FormatIndexEntry}[2]{%
\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}}%
}
\DeclareSIUnit\bit{\textcolor{red}{bit}}% < ---- This needs to be repeated
\NewDocumentCommand{\AddIndexEntry}{%
O{}% #1 = index name
m% #2 = word to index this under
m% #3 = indexed term
m% #4 = symbol
}{%
\expandafter\IndexWithName\expandafter{%
#2!\FormatIndexEntry{#3}{#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}$}
\clearpage
\setcounter{secnumdepth}{0}
\printindex[Name]
\end{document}
답변1
평소와 마찬가지로 확장 문제입니다. 쓰기가 발생하면 \bit
정의되지 않은 오류가 발생합니다. \si
또는 \SI
.
서문에서도 선언이 필요한 이유가 무엇인지 잘 모르겠지만 색인 항목 확장을 피하면 더 나은 설정을 얻을 수 있습니다.
\documentclass{article}
\usepackage{imakeidx}
\usepackage{xparse}
\usepackage{siunitx}
\usepackage{xcolor}
\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
%% 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}}
\clearpage
\setcounter{secnumdepth}{0}
\printindex[Name]
\end{document}
나는 견고하게 만들었 으며 항목의 더 나은 대조를 위해 \FormatIndexEntry
추가했습니다 .#3@