寄存器
寄存器
这家伙很懒,什么也没写!

注册于 4年前

回答
170
文章
5
关注者
17

采用楼上方案有个问题就是当表格行数变化时,得不断修改row参数。

另一个方案是在所有单元格中先使用\alert<.>以停止beamerpauses计数器,然后在第1列使用\alert<+>覆盖第一列的\alert<.>以在每行开始时递增beamerpauses计数器,从而实现逐行显示。如果某行不需要高亮,则对该行的第1列再次使用\alert<.>覆盖其\alert<+>,如对cell{1}{1}再次使用\alert<.>则可以取消第1行的逐列高亮。

逻辑止看似有点复杂,但这样可以不用考虑具体的表格行数,相对比较通用。

但有一点需要注意,需要在导言区使用\UseTblrLibrary{counter}修正tabularray的计数器。

完整的代码如下:

\documentclass{ctexbeamer}

\usepackage{tabularray}

\UseTblrLibrary{counter} %% added this line

\begin{document}

\begin{frame}
    \frametitle{表格修饰的主要方法}

    % \begin{table} % Beamer中不应该使用table浮动体
      \centering
      \begin{tblr}{
        % 对所有单元枨添加\alert<.>命令,
        % 暂停增加beamerpauses计数器
        cells = {m,cmd=\alert<.>},
        colspec = {Q[c]Q[l,20em]},
        hline{1,Z} = {1pt},
        hline{2},
        % 给第一列添加<+>,增加beamerpauses计数
        % 从而实现逐行显示
        column{1}={cmd=\alert<+>},
        % 暂停增加beamerpauses计数器
        cell{1}{1}={cmd=\alert<.>},
      }
        修饰内容 & 主要属性\\
        框线 & 样式、颜色、宽度\\
        底纹 & 颜色、图案(样式、颜色)\\
        大小 & {自动调整:根据内容、根据窗口 \\指定宽高:指定高度、宽度(厘米、百分比) \\均分行列:分布行、分布列}\\
        对齐 & {九宫格对齐:表格其实只控制了上中下对齐,左右对齐是用段落 \\文字方向:简化的页面设置--文字方向 \\单元格边距:内容盒子和格盒子的距离}\\
        内容 & 同具体对象的设置一样\\
      \end{tblr}
    % \end{table}

  \end{frame}

\end{document}

对于这种散点图,我觉得使用tkz-base宏包进行绘制也不失为一种方便的方案:

% 引入文档类
\documentclass[margin=5pt]{standalone}
% 导言区
\usepackage{ctex}
\usepackage{tkz-base}

% 正文区
\begin{document}

\begin{tikzpicture}[scale=1.00]
  \tkzInit[xmin=34,xmax=56,xstep=2,ymin=460,ymax=620,ystep=20]
  \tkzDrawX[label={}]
  \tkzDrawY[label={}]
  \tkzLabelX[font=\scriptsize]
  \tkzLabelY[font=\scriptsize]
  \tkzText[draw,
    line width = 1pt,%
    color = blue,%
    fill = orange!20](46,435)%
  {年宣传费/千元}
  \tkzText[draw,
    line width = 1pt,%
    color = red,%
    rotate = 90,%
    fill = orange!20](31,540)%
  {年销售量/$t$}
  \tkzDefSetOfPoints[show]{38/500, 40/540, 44/560, 46/570,
                           48/580, 50/590, 56/600}
  \tkzDrawSetOfPoints[mark=ball,mark size=2pt]
\end{tikzpicture}

\end{document}

image.png

请提供MWE(最小工作示例),否则无人知道为什么.

可以基于l3draw宏包,用LaTeX3实现,圆的半径和等分数可以通过可选参数用key-value方式指定(默认半径为8cm,等分数为10),如:

\documentclass{standalone}

\usepackage{l3draw}
\usepackage{xparse}

\ExplSyntaxOn

\bool_new:N \l__circdiv_intersection_bool
\int_new:N  \l__circdiv_cnt_int
\dim_new:N  \l__circdiv_radius_dim

% key_value选项设计
\keys_define:nn { circdiv }
  {
    % 等分数
    cnt .int_set:N = \l__circdiv_cnt_int,
    cnt .initial:n = 10,

    % 圆的半径
    r .dim_set:N = \l__circdiv_radius_dim ,
    r .initial:n = 1cm,

    unknown .code:n = { \msg_error:nn { circdiv } { unknown-option } }
  }
\msg_new:nnn { circdiv } { unknown-option }
  { package~ option~ "\l_keys_key_tl"~ is~ unknown. }

\keys_set:nn { circdiv }
  {
    cnt = 10 ,
    r   = 8cm,
  }

\NewDocumentCommand \circdivset { m }
  { \keys_set:nn { circdiv } {#1} }

\cs_new:Npn \__circdiv_div:
  {
    \draw_begin:
      \color_select:n { blue }
      \draw_path_circle:nn { 0cm, 0cm } { \l__circdiv_radius_dim }
      \draw_path_use_clear:n { stroke }
      \color_select:n { red }
      \int_step_inline:nnnn { 0 } { 360/\l__circdiv_cnt_int } { 359 }
        {
          \int_step_inline:nnnn { 0 } { 360/\l__circdiv_cnt_int } { 359 }
            {
              \draw_path_moveto:n
                  { \draw_point_polar:nn { \l__circdiv_radius_dim } { ##1 } }
              \draw_path_lineto:n
              { \draw_point_polar:nn { \l__circdiv_radius_dim } { ####1 } }
            }
        }
      \draw_path_close:
      \draw_path_use_clear:n { stroke }
    \draw_end:
  }

\NewDocumentCommand{\circdiv}{ s O{} }
  {
    % 可以定义一个星号命令以绘制交点(待研究)
    % \IfBooleanTF{#1}
    %   {
    %     \bool_set_false:N \l__circdiv_intersection_bool
    %   }{
    %     \bool_set_true:N  \l__circdiv_intersection_bool
    %   }
      \group_begin:
        \keys_set:nn { circdiv } {#2}

        \__circdiv_div:
      \group_end:
  }

\ExplSyntaxOff

\begin{document}

\circdiv
\circdiv[cnt=36]

\end{document}

绘制结果为:
image.png

1、请在提问时使用代码块排版代码,否则无法直接拷贝测试,需要修改代码。
2、不建议在一个\usepackage里写这么多宏包,这样会造成无法采用折半注释法分析宏包冲突等问题。
3、类似\usepackage{ctex}\usepackage[OT1]{fontenc}在你的文档中是无意义的,请先读一下lshort-zh-cn,再来用LaTeX工作。
4、提问中并未提供2.jpg图像文件,无法进行测试,建议使用example-image代替。
5、折半注释法是LaTeX调试中一个非常重要的方法,建议熟练掌握。


采用折半注释法,注释所有wrapfigure环境后,则编译没有问题,显然这是该环境的使用问题。使用texdoc warpfig查阅其说明书可以看到其语法为:
image.png

但代码中,仅提供了一个必选参数{R},因此,这是造成问题的原因,修改后的代码为:

\documentclass{ctexbook}
\usepackage{txfonts}
\usepackage{fancyhdr}
\usepackage{CJKfntef}
\usepackage{color}
% \usepackage{ctex}
\usepackage{enumitem}
\usepackage{setspace}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{wrapfig}
\usepackage{pdfpages}
% \usepackage[OT1]{fontenc}
\begin{document}

\part{AAA}
\section*{AAA}
\subsection*{AAA}
\lipsum[1-3]
\begin{wrapfigure}{r}{5cm}
\centering
\includegraphics[width=25bp]{example-image}
\caption{AAA}
\end{wrapfigure}
\lipsum[1-5]
\end{document}

其中\begin{wrapfigure}{r}{5cm}中的{5cm}是随意给的,请根据需要进行调整。


说明: wrapfig宏包的最新版本是2003年的版本,已非常老了,建议使用新的wrapfig2宏包。在新的wrapfig2宏包中,wrapfigure环境仅需要一个必选参数,因此你的代码可以通过编译。但wrapfig2宏包会与color宏包发行冲突,可以考虑不使用color宏包(折半注释很容易定位该问题)。

LaTeX分为文本模式和数学模式,而\textdegree不是数学模式中能输出的文本,因此需要使用\text{}命令进行输出(lshort-zh-cn, 4.2.2 数学模式),如:

\documentclass{article}

\usepackage{amsmath}

\begin{document}
  3\textdegree

  $3\text{\textdegree}$

  $3\textdegree$
\end{document}

其输出结果为:
image.png

你的代码不应该是不能编译,而是编译后没有输出。

ps. 提问量,请对代码请使用代码块进行编辑。

一、用的是什么样的文档类(模板),请提供MWE最小工作示例代码。
二、若是标准文档类,如果还是入门阶段,请接受它的结果,不要在这些方便过于纠结。

这个代码作者在github上有仓库: Polynomial-division,用该仓库的代码,余数为0的问题应该已解决。

另一个前面是负号时横线长度是可以解决的,但需要进行较为复杂的逻辑判断,需要判断第一个系数是否为负,根据正负设置\l__poly_uline_tl的起始位置和长度,如:
\prg_replicate:nn {2*\seq_count:N #2 + \l__poly_tmpb_int + 1} {&}修改为\prg_replicate:nn {2*\seq_count:N #2 + \l__poly_tmpb_int} {&}

\tl_put_right:Nx \l__poly_uline_tl {{\int_eval:n {2*\seq_count:N #2 - 1}}}修改为\tl_put_right:Nx \l__poly_uline_tl {{\int_eval:n {2*\seq_count:N #2}}}

但这样简单的修改会带来第一个数为正数时,会产生空白,个人认为进一步修改意义不大。

image.png

可以考虑使用新的tabularray宏包实现:

\documentclass{ctexart}

\usepackage{tabularray}

\begin{document}

\begin{tblr}{|Q[c,m]|Q[l,m]|}
  \hline
  十八年来 &{两只黄鹂鸣翠柳\\ \hspace*{\ccwd}一行白鹭上青天}\\
  \hline
\end{tblr}

\end{document}

image.png

我觉得更为合理的是把表格的内容与格式进一步分离:

\documentclass{ctexart}

\usepackage{xcolor}
\usepackage{tabularray}

\begin{document}

\begin{tblr}{hlines, vlines,
  rows={m},
  column{1}={c},
  column{2}={l,purple7}           
}
  十八年来 &{两只黄鹂鸣翠柳\\ \hspace*{\ccwd}一行白鹭上青天}\\
\end{tblr}

\end{document}

image.png

可以用xcoffins宏包的垂直盒子实现包装一下插图,不过会不会有其它问题我不能确定,你自己再试试。同样的处理方法,也许可以将列表环境丢在盒子里,然后看成一个图片用wrapfig2排版,可能能解决你的问题。

\documentclass{article}

\usepackage{kantlipsum,xgalley,tikz}

\usepackage{caption}
\usepackage{varwidth}
\usepackage{xcoffins}

\ExplSyntaxOn

\box_new:N \l_xwrapfig_fig_box
\box_new:N \l_xwrapfig_vfig_box
\box_new:N \l_xwrapfig_hfig_box
\dim_new:N \l_xwrapfig_wd_dim
\dim_new:N \l_xwrapfig_totalht_dim
\clist_new:N \l_xwrapfig_indents_clist
\int_new:N \l_xwrapfig_lines_int
\int_new:N \l_xwrapfig_totallines_int
\fp_new:N \l_xwrapfig_adjfig_fp

\keys_define:nn { xwrapfig }
{
  cutout .code:n = {
    \keys_set:nn { xwrapfig / cutout } { #1 }
  }
}

\keys_define:nn { xwrapfig / cutout }
{
  hmargin .dim_set:N = \l_xwrapfig_adjwd_dim,
  hmargin .initial:n = { 2ex },
  skip~lines .int_set:N = \l_xwrapfig_adjlines_int,
  skip~lines .initial:n = { 1 },
  top~lines .int_set:N = \l_xwrapfig_toplines_int,
  top~lines .initial:n = { 2 },
}
\cs_generate_variant:Nn \galley_cutout_right:nn { nV }
\cs_generate_variant:Nn \galley_cutout_left:nn { nV }
\cs_new_protected:Nn \xwrapfig_prewrap:n
{
  \clist_clear:N \l_xwrapfig_indents_clist
  \clist_clear:N \l_xwrapfig_zindents_clist
  \vbox_set:Nn \l_xwrapfig_vfig_box { #1 }
  \dim_set:Nn \l_xwrapfig_totalht_dim { \box_ht:N \l_xwrapfig_vfig_box + \box_dp:N \l_xwrapfig_vfig_box }
  \hbox_set:Nn \l_xwrapfig_hfig_box { #1 }
  \dim_set:Nn \l_xwrapfig_wd_dim { \box_wd:N \l_xwrapfig_hfig_box + \l_xwrapfig_adjwd_dim }
  \int_set:Nn \l_xwrapfig_totallines_int { ( \l_xwrapfig_totalht_dim / \baselineskip ) + \l_xwrapfig_adjlines_int }
  \int_zero:N \l_xwrapfig_lines_int
  \int_do_while:nn { \l_xwrapfig_lines_int < \l_xwrapfig_totallines_int }
  {
    \int_incr:N \l_xwrapfig_lines_int
    \clist_put_right:Nn \l_xwrapfig_indents_clist { \l_xwrapfig_wd_dim }
  }
}
\cs_new_protected:Nn \xwrapfig_postwrap:
{
  \box_set_ht:Nn \l_xwrapfig_fig_box { 0pt }
  \box_set_dp:Nn \l_xwrapfig_fig_box { 0pt }
  \skip_vertical:n { -\baselineskip }
  \box_use:N \l_xwrapfig_fig_box
}
\cs_new_protected:Nn \xwrapfig_putright:nn
{
  \xwrapfig_prewrap:n { #2 }
  \galley_cutout_right:nV { #1 } \l_xwrapfig_indents_clist
  \vbox_set:Nn \l_xwrapfig_fig_box
  {
    \fp_set:Nn \l_xwrapfig_adjfig_fp { ( #1 + .5\l_xwrapfig_adjlines_int ) * \baselineskip }
    \skip_vertical:n  { \fp_to_dim:N \l_xwrapfig_adjfig_fp }
    \hbox_to_wd:nn { \linewidth } { \skip_horizontal:n { \linewidth - \l_xwrapfig_wd_dim + .5\l_xwrapfig_adjwd_dim } #2 }
  }
  \xwrapfig_postwrap:
}
\cs_new_protected:Nn \xwrapfig_putleft:nn
{
  \xwrapfig_prewrap:n { #2 }
  \galley_cutout_left:nV { #1 } \l_xwrapfig_indents_clist
  \vbox_set:Nn \l_xwrapfig_fig_box
  {
    \fp_set:Nn \l_xwrapfig_adjfig_fp { ( #1 + .5\l_xwrapfig_adjlines_int ) * \baselineskip }
    \skip_vertical:n  { \fp_to_dim:N \l_xwrapfig_adjfig_fp }
    \hbox_to_wd:nn { \l_xwrapfig_wd_dim } { \skip_horizontal:n { .5\l_xwrapfig_adjwd_dim } #2 }
  }
  \xwrapfig_postwrap:
}
\cs_generate_variant:Nn \xwrapfig_putleft:nn { Vn }
\cs_generate_variant:Nn \xwrapfig_putright:nn { Vn }
\NewDocumentCommand\putright { O { } +m }
{
  \keys_set:nn { xwrapfig / cutout } { #1 }
  \xwrapfig_putright:Vn \l_xwrapfig_toplines_int { #2 }
}
\NewDocumentCommand\putleft { O { } +m }
{
  \keys_set:nn { xwrapfig / cutout } { #1 }
  \xwrapfig_putleft:Vn \l_xwrapfig_toplines_int { #2 }
}
\NewDocumentCommand\resetindents { }
{
  \galley_parshape_set_multi:nnnN { 0 } { 0pt } { 0pt } \c_true_bool
}
\NewDocumentCommand\xwrapfigsetup { m }
{
  \keys_set:nn { xwrapfig } { #1 }
}
\ExplSyntaxOff


\begin{document}
  \kant[1]

  \putleft[top lines=3]{\includegraphics[width=.3\textwidth]{example-image-a}}
  \kant[3]

  \NewCoffin \ImgCoffin
  \SetVerticalCoffin\ImgCoffin{0.2\textwidth}{
    \includegraphics[scale=0.2]{example-image-a}
    \captionof*{figure}{ABCD}
  }

  \putright{
    \TypesetCoffin\ImgCoffin
  }
  \kant[5]

  \SetVerticalCoffin\ImgCoffin{0.4\textwidth}{
    \includegraphics[scale=0.4]{example-image-a}
    \captionof{figure}{ABCD}\label{fig-test}
  }

  In figure \ref{fig-test}:
  \putleft{
    \TypesetCoffin\ImgCoffin
  }

  \resetindents

  \xwrapfigsetup{%
    cutout={%
      skip lines=3,
      hmargin=5ex,
      top lines=1,
    }
  }

  \kant[7]

  \putright{\includegraphics[width=.3\textwidth]{example-image-a}}
  \kant[5]

\end{document}

以下是用wrapfig2结合xcoffins垂直盒子实现的带列表环境的图文混排,不知是不是合乎需求,如果是,则可能这个方案更为简洁。

\documentclass{ctexart}

\usepackage{xcoffins}
\usepackage{wrapfig2}
\usepackage{zhlipsum}

\begin{document}

\begin{wrapfigure}{r}{0.3\textwidth}
  \centering
  \includegraphics[scale=0.2]{example-image-a}
  \caption{示例图A}\label{fig:figure-a}
\end{wrapfigure}
\zhlipsum[1]

\NewCoffin \ImgCoffin
\SetVerticalCoffin\ImgCoffin{0.3\textwidth}{
  \begin{itemize}
    \item \LaTeX item A
    \item \LaTeX item B
    \item \LaTeX item C
  \end{itemize}
}

\begin{wrapfigure}{l}{0.4\textwidth}
  \centering
  \TypesetCoffin\ImgCoffin
  \caption{示例图B}\label{fig:figure-b}
\end{wrapfigure}
\zhlipsum[2]

\end{document}

image.png

还可以在原代码再添加captionlabel两个key,然后用coffin实现:

% https://tex.stackexchange.com/questions/309302/best-way-to-wrap-text-around-figures-in-expl3
\documentclass{article}

\usepackage{kantlipsum,tikz}

\usepackage{caption}
\usepackage{varwidth}
\usepackage{xcoffins}

\usepackage{xgalley}
\ExplSyntaxOn

\box_new:N    \l_xwrapfig_fig_box
\box_new:N    \l_xwrapfig_vfig_box
\box_new:N    \l_xwrapfig_hfig_box
\dim_new:N    \l_xwrapfig_wd_dim
\dim_new:N    \l_xwrapfig_totalht_dim
\clist_new:N  \l_xwrapfig_indents_clist
\int_new:N    \l_xwrapfig_lines_int
\int_new:N    \l_xwrapfig_totallines_int
\fp_new:N     \l_xwrapfig_adjfig_fp
\bool_new:N   \l_xwrapfig_caption_num_bool
\tl_new:N     \l_xwrapfig_caption_tl
\tl_new:N     \l_xwrapfig_label_tl
\coffin_new:N \l_xwrapfig_output_coffin

\keys_define:nn { xwrapfig }
  {
    cutout .code:n = {
      \keys_set:nn { xwrapfig / cutout } { #1 }
    }
  }

\keys_define:nn { xwrapfig / cutout }
  {
    hmargin .dim_set:N = \l_xwrapfig_adjwd_dim,
    hmargin .initial:n = { 2ex },
    skip~lines .int_set:N = \l_xwrapfig_adjlines_int,
    skip~lines .initial:n = { 1 },
    top~lines .int_set:N = \l_xwrapfig_toplines_int,
    top~lines .initial:n = { 2 },
    caption .tl_set:N = \l_xwrapfig_caption_tl,
    caption .initial:n = {},
    label .tl_set:N = \l_xwrapfig_label_tl,
    label .initial:n = {},
  }

\cs_generate_variant:Nn \galley_cutout_right:nn { nV }
\cs_generate_variant:Nn \galley_cutout_left:nn { nV }

\cs_new_protected:Nn \xwrapfig_prewrap:n
  {
    \clist_clear:N \l_xwrapfig_indents_clist
    \clist_clear:N \l_xwrapfig_zindents_clist

    \vbox_set:Nn \l_xwrapfig_vfig_box
      {
        \tl_if_empty:VTF \l_xwrapfig_caption_tl
          {
            #1
          }{
            #1
            \captionof*{figure}{\l_xwrapfig_caption_tl}
          }
      }
    \dim_set:Nn  \l_xwrapfig_totalht_dim
      { \box_ht:N \l_xwrapfig_vfig_box + \box_dp:N \l_xwrapfig_vfig_box }

    \hbox_set:Nn \l_xwrapfig_hfig_box { #1 }
    \dim_set:Nn \l_xwrapfig_wd_dim
      { \box_wd:N \l_xwrapfig_hfig_box + \l_xwrapfig_adjwd_dim }

    \vcoffin_set:Nnn \l_xwrapfig_output_coffin { \l_xwrapfig_wd_dim }
      {
        \centering
        \bool_if:NTF \l_xwrapfig_caption_num_bool
          {
            \tl_if_empty:VTF \l_xwrapfig_caption_tl
              {
                #1
              }{
                #1
                \captionof{figure}{\l_xwrapfig_caption_tl}
                \tl_if_empty:VF \l_xwrapfig_label_tl
                  {
                    \label{\l_xwrapfig_label_tl}
                  }
              }
          }{
            \tl_if_empty:VTF \l_xwrapfig_caption_tl
              {
                #1
              }{
                #1
                \captionof*{figure}{\l_xwrapfig_caption_tl}
              }
          }
      }
    \tl_clear:N \l_xwrapfig_caption_tl
    \tl_clear:N \l_xwrapfig_label_tl

    \int_set:Nn \l_xwrapfig_totallines_int
      { ( \l_xwrapfig_totalht_dim / \baselineskip ) + \l_xwrapfig_adjlines_int }

    \int_zero:N \l_xwrapfig_lines_int
    \int_do_while:nn { \l_xwrapfig_lines_int < \l_xwrapfig_totallines_int }
      {
        \int_incr:N \l_xwrapfig_lines_int
        \clist_put_right:Nn \l_xwrapfig_indents_clist { \l_xwrapfig_wd_dim }
      }
  }

\cs_new_protected:Nn \xwrapfig_postwrap:
  {
    \box_set_ht:Nn \l_xwrapfig_fig_box { 0pt }
    \box_set_dp:Nn \l_xwrapfig_fig_box { 0pt }

    \skip_vertical:n { -\baselineskip }

    \box_use:N \l_xwrapfig_fig_box
  }

\cs_new_protected:Nn \xwrapfig_putright:nn
  {
    \xwrapfig_prewrap:n { #2 }

    \galley_cutout_right:nV { #1 } \l_xwrapfig_indents_clist

    \vbox_set:Nn \l_xwrapfig_fig_box
    {
      \fp_set:Nn \l_xwrapfig_adjfig_fp
        { ( #1 + .5\l_xwrapfig_adjlines_int ) * \baselineskip }

      \skip_vertical:n  { \fp_to_dim:N \l_xwrapfig_adjfig_fp }

      \hbox_to_wd:nn { \linewidth }
        {
          \skip_horizontal:n { \linewidth - \l_xwrapfig_wd_dim
                               + .5\l_xwrapfig_adjwd_dim }
          \coffin_typeset:Nnnnn \l_xwrapfig_output_coffin
            {l} {vc} {0pt} {0pt}
          % #2
        }
    }

    \xwrapfig_postwrap:
  }

\cs_new_protected:Nn \xwrapfig_putleft:nn
  {
    \xwrapfig_prewrap:n { #2 }

    \galley_cutout_left:nV { #1 } \l_xwrapfig_indents_clist

    \vbox_set:Nn \l_xwrapfig_fig_box
      {
        \fp_set:Nn \l_xwrapfig_adjfig_fp
          { ( #1 + .5\l_xwrapfig_adjlines_int ) * \baselineskip }

        \skip_vertical:n { \fp_to_dim:N \l_xwrapfig_adjfig_fp }

        \hbox_to_wd:nn { \l_xwrapfig_wd_dim }
          {
            % \skip_horizontal:n { .5\l_xwrapfig_adjwd_dim }
            \coffin_typeset:Nnnnn \l_xwrapfig_output_coffin
              {l} {vc} {0pt} {0pt}
            % #2
          }
      }
      \xwrapfig_postwrap:
  }
\cs_generate_variant:Nn \xwrapfig_putleft:nn { Vn }
\cs_generate_variant:Nn \xwrapfig_putright:nn { Vn }

\NewDocumentCommand\putright { s O { } +m }
  {
    \IfBooleanTF{#1}
      {
        \bool_set_false:N \l_xwrapfig_caption_num_bool
      }{
        \bool_set_true:N  \l_xwrapfig_caption_num_bool
      }
    \keys_set:nn { xwrapfig / cutout } { #2 }
    \xwrapfig_putright:Vn \l_xwrapfig_toplines_int { #3 }
  }
\NewDocumentCommand\putleft { s O { } +m }
  {
    \IfBooleanTF{#1}
      {
        \bool_set_false:N \l_xwrapfig_caption_num_bool
      }{
        \bool_set_true:N  \l_xwrapfig_caption_num_bool
      }
    \keys_set:nn { xwrapfig / cutout } { #2 }
    \xwrapfig_putleft:Vn \l_xwrapfig_toplines_int { #3 }
  }
\NewDocumentCommand\resetindents { }
  {
    \galley_parshape_set_multi:nnnN { 0 } { 0pt } { 0pt } \c_true_bool
  }
\NewDocumentCommand\xwrapfigsetup { m }
  {
    \keys_set:nn { xwrapfig } { #1 }
  }
\ExplSyntaxOff


\begin{document}
  \kant[1]

  \putleft[top lines=3]{\includegraphics[width=.3\textwidth]{example-image-a}}
  \kant[3]

  \putright[caption=ABCD,label=fig-abcd]
  {
    \includegraphics[scale=0.2]{example-image-a}
  }
  \kant[5]

  \resetindents

  \xwrapfigsetup{%
    cutout={%
      skip lines=3,
      hmargin=5ex,
      top lines=1,
    }
  }

  \putright{\includegraphics[width=.3\textwidth]{example-image-a}}
  \kant[1]

  \putleft*[caption=EFGH,label=fig-efgh]
  {
    \includegraphics[scale=0.3]{example-image-a}
  }
  \kant[5]

  \kant[7]

  In figure \ref{fig-kkkk}:

  \xwrapfigsetup{%
    cutout={%
      skip lines=1,
      hmargin=2ex,
      top lines=3,
    }
  }
  \putleft[caption=KKKK,label=fig-kkkk]
  {
    \includegraphics[scale=0.3]{example-image-a}
  }
  \kant[5]

\end{document}

这是做广告吧,一般正文不会用这么大的字吧。

字不多的话,塞到盒子里放大,也是一个办法。还可以进行旋转、错切等变换。

也可以用LaTeX3切出单个字,然后进行单独处理。

发布
问题