간단한 "체계"환경 및 "체계 목록"생성

Nov 22 2020

내 논문의 대부분을 작성하고 조판했습니다. 현재 저는 그림 목록과 표 목록이 있습니다.

그러나 이제 내위원회는 나에게 제도 목록도 있어야한다고 말합니다. 화학에서 계획은 화학 구조와 반응 (이미지)을 포함하는 환경입니다.

불행히도 나는 이미 내 화학 구조를 그림으로 코딩했습니다. 고유 한 스키마 구성을 제공하는 것으로 보이는 chemstyle및과 같은 몇 가지 패키지가 있습니다 chemscheme. 그러나 일부 패키지는 화학 공식과 같은 것에 대해 자체 기본값을 설정하기 때문에 사용하지 않는 것이 좋습니다. (예를 들어, chemstyle패키지가을 정의 하는 것을 \ie보았지만 이미 \ie논문에 대한 자체 정의가 있습니다.) 이미 chemformulachemmacros패키지를 사용하고 있습니다.

나만의 Scheme 환경을 더 간단하게 만들 수있는 방법이 있습니까? 내가 필요한 유일한 차이점은 구성표에 "구성표"라는 캡션이 있어야하고 구성표 목록에 나열되어야한다는 것입니다. 즉, 그림과 계획의 유일한 차이점은 부기입니다.

다음은 제가 사용하고있는 몇 가지 중요한 패키지가 포함 된 MWE입니다. 한 가지 가능한 문제는 subcaption패키지를 사용하여 하위 그림을 만드는 것입니다. 일반적으로 그림 / 구성표 당 하나의 이미지 만 있지만 패키지 \phantomsubcaption에서 사용하여 하위 참조를 만듭니다 subcaption. 또한 tocloft그림과 표 목록의 간격을 조정하기 위해 패키지를 사용하고 있으며 잠재적으로 상황을 더 복잡하게 만들 수 있습니다.

마지막으로, 그림, 표 등을 참조하기 위해 해당 패키지 cleveref\cref명령을 많이 사용하기 때문에 패키지 와 함께 새로운 "scheme"환경을 사용할 수 있다면 좋을 것입니다 .

\documentclass[oneside,11pt]{book}

\usepackage[semibold,tt=false]{libertine}
\usepackage{libertinust1math}
\usepackage[font={sf,small},labelsep=quad,labelfont=sc]{caption}
\usepackage[subrefformat=parens]{subcaption}
\usepackage[
  expansion = false ,
  tracking = smallcaps ,
  letterspace = 40 ,
]{microtype}
\usepackage{booktabs}
\usepackage{acro}
\acsetup{
  barriers/use, barriers/reset,
  use-id-as-short,
}
\newcommand{\ie}{i.e.}
\newcommand{\eg}{e.g.}
\newcommand{\cf}{cf.}
\newcommand{\avg}[1]{\overline{#1}}
\usepackage{mdframed}
\usepackage[capitalize]{cleveref}
\usepackage{chemformula}
\setchemformula{charge-hshift=.5pt}
\usepackage{chemmacros}
\usepackage{graphicx}
\usepackage{enumitem}
\usepackage{calc}
\usepackage{tabto}
\usepackage[titles]{tocloft}
\setlength{\cftfignumwidth}{2.9em}
\setlength{\cfttabnumwidth}{2.9em}

\begin{document}

\addcontentsline{toc}{chapter}{\listfigurename}
\listoffigures

% \phantomsection %% Remove if using hyperref
\addcontentsline{toc}{chapter}{\listtablename}
\listoftables

\chapter{First chapter}
Text in the first chapter.
Refer to \cref{fig:firstfig} using cleveref package.
Refer to \cref{tbl:firsttbl}.
Refer to \cref{fig:multi}, \cref{fig:multi:a}, and \cref{fig:multi:b}.
Refer to eventual scheme, \cref{scm:eventualscheme}.
Refer to eventual multi-part scheme, \cref{scm:eventualmultischeme}.
% Example figure
\begin{figure}[!h]
  \centering
  \includegraphics[width=0.02\textwidth]{example-image}
  \caption{Caption of figure in first chapter.}\label{fig:firstfig}
\end{figure}

% Example table 
\begin{table}[!h]
  \centering
  \begin{tabular}{ll}
    \toprule
    A & B\\
    \bottomrule
  \end{tabular}
  \caption{Caption of table in first chapter.}\label{tbl:firsttbl}
\end{table}

% MULTIPART FIGURE 
\begin{figure}[!h]
  \centering
  \begin{subfigure}{\textwidth}
    \centering
    \includegraphics[width=0.02\textwidth]{example-image}
    \phantomsubcaption\label{fig:multi:a}
  \end{subfigure}
  \begin{subfigure}{0pt}
    \phantomsubcaption\label{fig:multi:b}
  \end{subfigure}
  \caption{Caption of figure referring to parts \subref{fig:multi:a} and \subref{fig:multi:b} with subref command.}\label{fig:multi}
\end{figure}

% I NEED TO CHANGE THE FOLLOWING FIGURE TO A SCHEME (SINGLE-PART SCHEME)
\begin{figure}[!h]
  \centering
  \includegraphics[width=0.02\textwidth]{example-image-a}
  \caption{Caption of eventual scheme.}\label{scm:eventualscheme}
\end{figure}

% I NEED TO CHANGE THE FOLLOWING FIGURE TO A SCHEME (MULTI-PART SCHEME, BUT ONLY WITH ONE IMAGE)
\begin{figure}[!h]
  \centering
  \begin{subfigure}{\textwidth}
    \centering
    \includegraphics[width=0.02\textwidth]{example-image-b}
    \phantomsubcaption\label{scm:eventualmultischeme:a}
  \end{subfigure}
  \begin{subfigure}{0pt}
    \phantomsubcaption\label{scm:eventualmultischeme:a}
  \end{subfigure}
  \caption{Caption of eventual scheme referring to parts \subref{fig:multi:a} and \subref{fig:multi:b} with subref command.}\label{scm:eventualmultischeme}
\end{figure}

\chapter{Second chapter}
Text in the second chapter.
Refer to \cref{fig:secondfig}.
% Another example figure
\begin{figure}[!h]
  \centering
  \includegraphics[width=0.02\textwidth]{example-image}
  \caption{Caption of figure in second chapter.}\label{fig:secondfig}
\end{figure}
\end{document}

답변

3 leandriis Nov 22 2020 at 16:36

여기에 결합 할 수있는 방법이다 chemmacros' scheme와 모듈을 subcaption하고 cleveref. 또한 하위 그림과 일치하도록 참조 스타일을 변경했습니다.

불행히도 \listofschemes현재 book클래스 와 호환되지 않는 것 같습니다 (참조 : 해당 버그 보고서 ). 따라서 report다음 MWE에 사용 했습니다.

  • 계획 목록 :

  • 계획 및 하위 계획에 대한 참조 :

  • 계획의 캡션 :

\documentclass[oneside,11pt]{report}

\usepackage[semibold,tt=false]{libertine}
\usepackage{libertinust1math}
\usepackage[font={sf,small},labelsep=quad,labelfont=sc]{caption}
\usepackage[subrefformat=parens]{subcaption}
\usepackage[
  expansion = false ,
  tracking = smallcaps ,
  letterspace = 40 ,
]{microtype}
\usepackage{booktabs}
\usepackage{acro}
\acsetup{
  barriers/use, barriers/reset,
  use-id-as-short,
}
\newcommand{\ie}{i.e.}
\newcommand{\eg}{e.g.}
\newcommand{\cf}{cf.}
\newcommand{\avg}[1]{\overline{#1}}
\usepackage{mdframed}

\usepackage{chemformula}
\setchemformula{charge-hshift=.5pt}
\usepackage{chemmacros}
\chemsetup{modules=scheme}

\AtEndPreamble{\DeclareCaptionSubType*{scheme}\counterwithin{scheme}{chapter}\renewcommand\thesubscheme{\thescheme\alph{subscheme}}}


\usepackage{graphicx}
\usepackage{enumitem}
\usepackage{calc}
\usepackage{tabto}
\usepackage[titles]{tocloft}
\setlength{\cftfignumwidth}{2.9em}
\setlength{\cfttabnumwidth}{2.9em}

\usepackage{xpatch}
\makeatletter
\xapptocmd{\@chapter}{\addtocontents{los}{\protect\addvspace{10\p@}}}{}{}
\makeatother

\usepackage[capitalize]{cleveref}
\crefformat{subscheme}{\schemename~#2#1#3}


\begin{document}

\addcontentsline{toc}{chapter}{\listfigurename}
\listoffigures

% \phantomsection %% Remove if using hyperref
\addcontentsline{toc}{chapter}{\listtablename}
\listoftables

\addcontentsline{toc}{chapter}{\listschemename}
\listofschemes

\chapter{First chapter}
Text in the first chapter.

Refer to \cref{fig:firstfig} using cleveref package.

Refer to \cref{tbl:firsttbl}.

Refer to \cref{fig:multi}, \cref{fig:multi:a}, and \cref{fig:multi:b}.

Refer to eventual scheme, \cref{scm:eventualscheme}.

Refer to eventual multi-part scheme, \cref{scm:eventualmultischeme}, \cref{scm:eventualmultischeme:a}, and \cref{scm:eventualmultischeme:b}.


\begin{figure}[!h]
  \caption{Caption of figure in first chapter.}\label{fig:firstfig}
\end{figure}


\begin{table}[!h]
  \caption{Caption of table in first chapter.}\label{tbl:firsttbl}
\end{table}

 
\begin{figure}[!h]
  \begin{subfigure}{\textwidth}
    \phantomsubcaption\label{fig:multi:a}
  \end{subfigure}
  \begin{subfigure}{0pt}
    \phantomsubcaption\label{fig:multi:b}
  \end{subfigure}
  \caption{Caption of figure referring to parts \subref{fig:multi:a} and \subref{fig:multi:b} with subref command.}\label{fig:multi}
\end{figure}


\begin{scheme}[!h]
  \caption{Caption of scheme.}\label{scm:eventualscheme}
\end{scheme}

\begin{scheme}[!h]

  \begin{subfigure}{\textwidth}
    \phantomsubcaption\label{scm:eventualmultischeme:a}
  \end{subfigure}
  \begin{subfigure}{0pt}
    \phantomsubcaption\label{scm:eventualmultischeme:b}
  \end{subfigure}
  \caption{Caption of scheme referring to parts \subref{fig:multi:a} and \subref{fig:multi:b} with subref command.}\label{scm:eventualmultischeme}
\end{scheme}

\chapter{Second chapter}
Text in the second chapter.
Refer to \cref{fig:secondfig}.

\begin{figure}[!h]
  \caption{Caption of figure in second chapter.}\label{fig:secondfig}
\end{figure}

\begin{scheme}[!h]
  \caption{Caption of scheme.}\label{scm:eventualscheme2}
\end{scheme}

\end{document}
3 egreg Nov 22 2020 at 18:34

.NET 용 newfloat패키지와 scheme모듈을 로드합니다 chemmacros.

에 대한 subscheme환경 을 설정하기 만하면 subcaption됩니다.이 작업은 시작 문서에서 수행해야합니다.

나는로드 tocbibind추가하는 \listoffigures\listoftables내용의 테이블에. 수동 방법이 잘못되었습니다. 최소한 \cleardoublepage이전에 있어야합니다 \addcontentsline.

\documentclass[oneside,11pt]{book}

\usepackage[semibold,tt=false]{libertine}
\usepackage{libertinust1math}
\usepackage[font={sf,small},labelsep=quad,labelfont=sc]{caption}
\usepackage[subrefformat=parens]{subcaption}
\usepackage{newfloat}
\usepackage[
  expansion = false ,
  tracking = smallcaps ,
  letterspace = 40 ,
]{microtype}
\usepackage{booktabs}
\usepackage{acro}
\usepackage{mdframed}
\usepackage{chemformula}
\usepackage{chemmacros}
\usepackage{graphicx}
\usepackage{enumitem}
\usepackage{calc}
\usepackage{tabto}
\usepackage[titles]{tocloft}
\usepackage[nottoc]{tocbibind}
\usepackage[capitalize]{cleveref} % should be last

% acro options
\acsetup{
  barriers/use, barriers/reset,
  use-id-as-short,
}
% chemmacros options
\usechemmodule{scheme}
% chemformula options
\setchemformula{charge-hshift=.5pt}
% tocloft options
\setlength{\cftfignumwidth}{2.9em}
\setlength{\cfttabnumwidth}{2.9em}
% caption options
\AtBeginDocument{\DeclareCaptionSubType*[alph]{scheme}}

% personal commands
\newcommand{\ie}{i.e.}
\newcommand{\eg}{e.g.}
\newcommand{\cf}{cf.}
\newcommand{\avg}[1]{\overline{#1}}

\begin{document}

\tableofcontents
\listoffigures
\listoftables
\listofschemes

\chapter{First chapter}

Text in the first chapter.
Refer to \cref{fig:firstfig} using cleveref package.
Refer to \cref{tbl:firsttbl}.
Refer to \cref{fig:multi}, \cref{fig:multi:a}, and \cref{fig:multi:b}.
Refer to eventual scheme, \cref{scm:eventualscheme}.
Refer to eventual multi-part scheme, \cref{scm:eventualmultischeme}.

% Example figure
\begin{figure}[!h]
  \centering
  \includegraphics[width=0.02\textwidth]{example-image}
  \caption{Caption of figure in first chapter.}\label{fig:firstfig}
\end{figure}

% Example table 
\begin{table}[!h]
  \centering
  \begin{tabular}{ll}
    \toprule
    A & B\\
    \bottomrule
  \end{tabular}
  \caption{Caption of table in first chapter.}\label{tbl:firsttbl}
\end{table}

% MULTIPART FIGURE 
\begin{figure}[!h]
  \centering
  \begin{subfigure}{0.45\textwidth}
    \centering
    \includegraphics[width=0.02\textwidth]{example-image}
    \phantomsubcaption\label{fig:multi:a}
  \end{subfigure}
  \begin{subfigure}{0.45\textwidth}
    \includegraphics[width=0.02\textwidth]{example-image}
    \phantomsubcaption\label{fig:multi:b}
  \end{subfigure}
  \caption{Caption of figure referring to parts \subref{fig:multi:a} and \subref{fig:multi:b} with subref command.}\label{fig:multi}
\end{figure}

\begin{scheme}[!h]
  \centering
  \includegraphics[width=0.02\textwidth]{example-image-a}
  \caption{Caption of eventual scheme.}\label{scm:eventualscheme}
\end{scheme}

\begin{scheme}[!h]
  \centering
  \begin{subscheme}{0.45\textwidth}
    \centering
    \includegraphics[width=0.02\textwidth]{example-image-a}
    \phantomsubcaption\label{scm:eventualmultischeme:a}
  \end{subscheme}
  \begin{subscheme}{0.45\textwidth}
    \includegraphics[width=0.02\textwidth]{example-image-b}
    \phantomsubcaption\label{scm:eventualmultischeme:b}
  \end{subscheme}
  \caption{Caption of eventual scheme referring to parts \subref{fig:multi:a} and \subref{fig:multi:b} with subref command.}\label{scm:eventualmultischeme}
\end{scheme}

\chapter{Second chapter}

Text in the second chapter.
Refer to \cref{fig:secondfig}.

% Another example figure
\begin{figure}[!h]
  \centering
  \includegraphics[width=0.02\textwidth]{example-image}
  \caption{Caption of figure in second chapter.}\label{fig:secondfig}
\end{figure}

\end{document}
2 gernot Nov 22 2020 at 02:50

@leandriis가 주석에서 언급했듯이 chemmacros패키지는 이미 원하는 것을 수행합니다.

그렇지 않으면 라인을 추가하기 만하면됩니다.

\usepackage{newfloat}
\DeclareFloatingEnvironment[fileext=los,placement={!ht},name=Scheme]{myscheme}
\captionsetup[myscheme]{labelfont=bf}
\crefname{myscheme}{scheme}{schemes}

당신의 전제 부에 다음은 부동 소수점 유형에 사용할 수있는 myscheme유사를 figures. 구성표 목록은 \listofmyschemes.