
나는 다음과 같은 것을 원합니다: tabularx 환경의 각 행에 대한 참조 가능한 자동 카운터와 하위 카운터. 단일 카운터에 대한 해결책을 찾을 수 있었습니다여기, 그러나 tabularx에 적용할 수 없습니다. 그래서 두 개의 카운터를 이용하여 직접 구현해 보았습니다. 마지막 줄의 더티 솔루션을 사용하지 않고 MainNumber 카운터와 SubNumber를 어떻게 참조합니까?
\documentclass{article}
\usepackage{array}
\usepackage{tabularx}
\newcounter{MainNumber}
\newcounter{SubNumber}[MainNumber]
\begin{document}
\begin{table}
\begin{tabularx}{\textwidth}{lX}
\refstepcounter{MainNumber} \label{firstMain} \theMainNumber & This is first main. \\
\refstepcounter{SubNumber} \label{1firstSub} \theMainNumber.\theSubNumber & This is first sub \\
\refstepcounter{SubNumber} \label{1secondSub} \theMainNumber.\theSubNumber & This is second sub\\
\refstepcounter{MainNumber} \label{secondMain} \theMainNumber & This is second main. \\
\refstepcounter{SubNumber} \label{2firstSub} \theMainNumber.\theSubNumber & This is first sub \\
\refstepcounter{SubNumber} \label{2secondSub} \theMainNumber.\theSubNumber & This is second sub\\
\end{tabularx}
\end{table}
second main first sub:~\ref{2firstSub}
shoud be: 2.1
dirty: \ref{secondMain}.\ref{1firstSub}
\end{document}
답변1
이와 같이? 아이디어는 \theSubNumber
원하는 형식을 갖도록 (카운터 값을 포함하는) 을 재정의하는 것입니다 <main>.<sub>
.
따라서 \theSubNumber
대신에 \theMainNumber.\theSubNumber
.
\documentclass{article}
\usepackage{array}
\usepackage{tabularx}
\newcounter{MainNumber}
\newcounter{SubNumber}[MainNumber]
\renewcommand{\theSubNumber}{\theMainNumber.\arabic{SubNumber}} % <-- added here
\begin{document}
\begin{table}
\begin{tabularx}{\textwidth}{lX}
\refstepcounter{MainNumber} \label{firstMain} \theMainNumber & This is first main. \\
\refstepcounter{SubNumber} \label{1firstSub} \theSubNumber & This is first sub \\
\refstepcounter{SubNumber} \label{1secondSub} \theSubNumber & This is second sub\\
\refstepcounter{MainNumber} \label{secondMain} \theMainNumber & This is second main. \\
\refstepcounter{SubNumber} \label{2firstSub} \theSubNumber & This is first sub \\
\refstepcounter{SubNumber} \label{2secondSub} \theSubNumber & This is second sub\\
\end{tabularx}
\end{table}
second main first sub:~\ref{2firstSub}
\end{document}
답변2
automatic
새로운 열 유형(예: 'b')을 정의하고 유형 자체에서 단계별 실행과 표시를 수행하도록 하는 또 다른 형태의 번호 매기기 b
입니다.
\ifstepmain
코드는 부울 '변수' 등을 기준으로 메인 카운터를 단계적으로 수행해야 하는지 아니면 하위 카운터를 단계적으로 수행해야 하는지 결정합니다.
코드는 새로운 기본 단계가 언제 발생하는지 알 수 없으므로(추가 조건이 지정되지 않는 한) 기본 단계로의 전환은 를 사용하여 수행되어야 합니다 \prepnextmainstep
.
표 형식의 내용을 여러 번 '조판'하려고 시도하고 매번 설정을 해야 하기 때문에 를 사용하면 tabularx
문제가 약간 복잡해집니다 .tabularx
\global
\documentclass{article}
\usepackage{array}
\usepackage{tabularx}
\newcounter{MainNumber}
\newcounter{SubNumber}[MainNumber]
\counterwithin{SubNumber}{MainNumber}
\newif\ifstepmain
\newcolumntype{b}{>{\ifstepmain\refstepcounter{MainNumber}\theMainNumber\global\stepmainfalse\else\refstepcounter{SubNumber}\theSubNumber\fi}l}
\newcommand{\prepnextmainstep}{%
\global\stepmaintrue%
}
\stepmaintrue
\begin{document}
\begin{table}
\begin{tabularx}{\textwidth}{bX}
\label{firstMain} & This is first main. \tabularnewline
\label{1firstSub} & This is first sub \tabularnewline
\label{1secondSub} & This is second sub \prepnextmainstep\tabularnewline
\label{secondMain} & This is second main.\tabularnewline
\label{2firstSub} & This is first sub \tabularnewline
\label{2secondSub} & This is second sub \prepnextmainstep \tabularnewline
\label{thirddMain} & This is third main.\tabularnewline
\label{3firstSub} & This is first sub \tabularnewline
\label{3secondSub} & This is second sub \prepnextmainstep \tabularnewline
\end{tabularx}
\end{table}
second main first sub:~\ref{2firstSub} and \ref{3secondSub}
shoud be: 2.1 and 3.2
\end{document}