쉬운 그림 배치 시스템

쉬운 그림 배치 시스템

나는 그림의 배치를 개선하기 위해 문서 의 큰 부분 {figure}과 코드를 복사하여 붙여넣는 경우가 많습니다. {table}오류가 발생하기 쉽고 약간 짜증스럽습니다.

나는 float 환경에 대한 [H] 인수에 대해 알고 있습니다. 여기서는 결과(예: PDF 문서)의 부동 위치를 내 부동 환경의 위치와 정확히 일치시키려는 것이 아닙니다. 나는 큰 코드 덩어리를 복사하여 붙여넣는 작업을 포함하지 않고 내 tex 파일 주위에 부동 소수점에 대한 코드를 이동하는 더 간단한 방법을 원합니다.

이런 일을 할 수 있는 새로운 환경과 매크로를 갖춘 시스템을 만드는 것이 가능할지 궁금합니다.

\begin{placer}{tag}
\begin{figure}
...
\end{figure}
\end{placer}

내 생각은 새로운 placer환경이 모든 것을 캡처하고 인수 태그를 기반으로 한 이름으로 저장한다는 것입니다.

그런 다음 새 매크로를 사용하여 원하는 위치에 그림을 배치합니다.

\place{tag}

이상적으로는 사용이 가능할 것입니다.\place{tag} ~ 전에위의 코드 조각을 사용해도 여전히 원하는 결과를 얻을 수 있습니다. 그리고 이상적으로는 파일 쓰기나 추가 컴파일 단계에 의존하지 않습니다. 기본적으로 플로트가 호출되지 않은 \begin{placer}{tag}경우 기본적으로 그 자리 에 배치된다면 매우 좋을 것이라고 생각합니다 \place{tag}.

이런 시스템이 가능할까요?

그렇다면 더 나아가고 싶습니다. 위와 같이 내용을 자동으로 캐시하도록 그림 및 테이블 부동 환경을 재정의하고 일부 레이블을 사용하여 위와 같이 장소 매크로를 통해 배치할 수 있도록 하고 싶습니다.

이를 구현한 일부 패키지를 로드하고 관련 그림의 일부 태그에 해당하는 인수와 함께 \place{fig:whatever} 명령을 추가하기만 하면 문서에서 그림과 표를 이동할 수 있습니다. 이 같은

\usepackage{placer}
\begin{document}

This is a document with one figure.

\begin{figure}
...
\label{fig:whatever}
\end{figure}

Actually, let’s put the figure code below this text.

\place{fig:whatever}.

답변1

xparse콘텐츠를 저장하는 환경을 정의하는 데 사용할 수 있습니다 . 속성 목록이 적절한 도구인 것 같습니다.

\documentclass{article}
\usepackage{xparse}

\usepackage{graphicx}
\usepackage{booktabs}

\usepackage{lipsum} % just for mock text

\ExplSyntaxOn

\prop_new:N \g_innisfree_floats_prop

\NewDocumentEnvironment{placer}{m +b}
 {
  \prop_gput:Nnn \g_innisfree_floats_prop { #1 } { #2 }
 }
 {}

\NewDocumentCommand{\place}{m}
 {
  \prop_item:Nn \g_innisfree_floats_prop { #1 }
 }

\ExplSyntaxOff

%%% define the objects (can be in a different file to be \input)

\begin{placer}{fig:example}
\begin{figure}[htp]
\centering
\includegraphics[width=4cm]{example-image}

\caption{A figure\label{fig:example}}
\end{figure}
\end{placer}

\begin{placer}{tab:example}
\begin{table}[tp]
\centering

\caption{A table\label{tab:example}}

\begin{tabular}{lc}
\toprule
X & Y \\
\midrule
A & 1 \\
B & 2 \\
\bottomrule
\end{tabular}
\end{table}
\end{placer}

\begin{document}

\lipsum[2]

\place{fig:example}

\lipsum[3-5]

\place{tab:example}

\lipsum

\end{document}

여기에 이미지 설명을 입력하세요

관련 정보