如何禁用带有参数的命令?

如何禁用带有参数的命令?

caption我在编译时必须删除该包tex4ht我发现它在 tex4ht 模式下存在问题,因此

因此我编辑了我的主要包含 tex 文件并执行了以下操作

\ifdefined\HCode %do not load caption package in tex4ht mode
\else 
\usepackage{caption}% use only with lualatex and pdflatex
\fi 

但由于我已经使用过它,并且有很多像这样使用它的代码

\begin{figure}[!htbp]
\centering
\captionsetup{width=.8\textwidth}    
\includegraphics[width=0.9\textwidth]{problems/p1} 
\caption{problem 1 description}%
\end{figure}

现在上面的代码在 tex4ht 模式下无法编译,因为 tex4ht 不知道\captionsetup来自caption包的设置是什么。

我不想手动编辑我碰巧使用上述内容的所有文件,并将上述每个情况更改为以下内容

\begin{figure}[!htbp]
\centering

\ifdefined\HCode 
\else 
\captionsetup{width=.8\textwidth} 
\fi 

\includegraphics[width=0.9\textwidth]{problems/p1} 

\caption{problem 1 description}%
\end{figure}

因此我再次更改了我的主 tex 包含文件,将其重新定义\captionsetup为在 tex4ht 模式下为无任何内容,如下所示

  \ifdefined\HCode %disable caption
      \newcommand{\captionsetup}{} 
  \else 
      \usepackage{caption}
  \fi 

但上述方法不起作用。现在当我用 tex4ht 编译时,我得到错误

! Missing number, treated as zero.
<to be read again>
}
l.52 \captionsetup{width=.8\textwidth}

禁用采用此类参数的命令的正确方法是什么,这样我就不必手动编辑所有乳胶文件?

Linux 上的 TL 2020。

答案1

TeX4ht 现在可以处理 Caption 包,因此您无需禁用它。以下示例有效:

\documentclass{article}
\usepackage{graphicx}
\usepackage{caption}
\begin{document}
\begin{figure}[!htbp]
  \centering
  \captionsetup{width=.8\textwidth}    
  \includegraphics[width=0.9\textwidth]{example-image.png} 
  \caption{problem 1 description}%
\end{figure}
\end{document}

在此处输入图片描述

相关内容