如何在指定位置的缩进段落的额外边距上插入导入的独立 tikzpicture 及其标题

如何在指定位置的缩进段落的额外边距上插入导入的独立 tikzpicture 及其标题

我有一个独立的 tikzpicture,我想把它放在由缩进段落创建的左边距(空白处),同时满足以下所有条件:

  1. 我不想在主 tex 文件中定义 tikzpicture,我想使用来导入它\includestandalone[width=.3\textwidth]{mytikz}

  2. 我的主 tex 文件有 0.5 英寸左边距, \geometry{left=.5in} 以及 指定的额外 2.25 英寸边距\begin{adjustwidth}{2.25in}{0pt};我不希望我的图片进入 0.5 英寸边距,我的图片必须仅放在 2.25 英寸缩进边距中

  3. 图形的位置必须由\begin{figure}[h!]我不想浮动其位置来控制

  4. 我的图形需要在 2.25 英寸缩进边距中添加标题

  5. 此外,我不想因为数字而中断我的段落以产生间隙

这是独立的 tikzpicture:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\filldraw[color=red!60, fill=red!5, very thick](-1,0) circle (1.5);
\fill[blue!50] (2.5,0) ellipse (1.5 and 0.5);
\draw[ultra thick, ->] (6.5,0) arc (0:220:1);
\end{tikzpicture}
\end{document} 

这是我的主要 tex 文件:

\documentclass[openany]{book}
\usepackage{tikz}
\usepackage{standalone}
\usepackage{changepage}
\usepackage{geometry}
\geometry{paperheight=9.8125in,paperwidth=8in, left=.5in, 
right=.5in,top=.75in,bottom=.4375in }
\usepackage{fancyhdr}
\fancypagestyle{plain}{\fancyhf{} \fancyhead[EL,OR]{\textbf 
 {\thepage}}\renewcommand{\headrulewidth}{0pt}}
 \pagestyle{plain}
 \renewcommand{\rmdefault}{pag}
 \begin{document}
 \begin{adjustwidth}{2.25in}{0pt}
 \section{Introduction}\label{Intro}
 \chapter {Dogs}
 Dogs\\
 Dogs.................
 \section{Cats}
 I put some words before the figure\\
 I put some words before the figure\\
 \begin{figure}[h!]
 \includestandalone[width=.3\textwidth]{mytikz}
  \caption{My TikZ picture}
  \label{fig:tikz:my}
  \end{figure}
  Do not want to break  the words because of the figure. I like to put my 
  figure at the indented margin.\\
  Do not want to break  the words because of the figure. I like to put my 
    figure at the indented margin.
  \end{adjustwidth}
  \end{document}

答案1

图形环境总是占据整个列或页面。您需要使用 wrapfig 或 minipage。此解决方案使用 minipage 并使用 重叠边距\llap

虽然\noindent这里并不严格需要,但\leavevmode在 之前需要某种形式的\llap\raisebox也起到两个作用,此时将图像的顶部与文本的顶部对齐,并垂直重叠文本。

最后,我将其替换\includestandalone\includegraphics,因为图像文件可用。我还删除了 tikz 和 standalone 包,但添加了 graphicx(通常由 tikz 加载)和 caption(需要\captionof)。我添加了[showframe]geometry 选项以使边距可见。

\documentclass[openany]{book}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{changepage}
\usepackage{geometry}
\geometry{paperheight=9.8125in,paperwidth=8in, left=.5in, 
right=.5in,top=.75in,bottom=.4375in,showframe}
\usepackage{fancyhdr}
\fancypagestyle{plain}{\fancyhf{} \fancyhead[EL,OR]{\textbf 
 {\thepage}}\renewcommand{\headrulewidth}{0pt}}
 \pagestyle{plain}
 \renewcommand{\rmdefault}{pag}
 \begin{document}
 \begin{adjustwidth}{2.25in}{0pt}
 \section{Introduction}\label{Intro}
 \chapter {Dogs}
 Dogs\\
 Dogs.................
 \section{Cats}
 I put some words before the figure\\
 I put some words before the figure\\
 \noindent\llap{\raisebox{\dimexpr \ht\strutbox-\height}[0pt][0pt]{% overlaps starting here
 \begin{minipage}{.3\textwidth}
 \includegraphics[width=\textwidth]{test5}% local filename
  \captionof{figure}{My TikZ picture}
  \label{fig:tikz:my}
  \end{minipage}}\hspace{\columnsep}}% add gap inside \llap
  Do not want to break  the words because of the figure. I like to put my 
  figure at the indented margin.\\
  Do not want to break  the words because of the figure. I like to put my 
    figure at the indented margin.
  \end{adjustwidth}
  \end{document}

演示

相关内容