如何仅显示文本?

如何仅显示文本?

我有一份学生研究项目的文档,想知道有多少页内容(不包括图片、列表和表格)。我的​​大学确实区分了内容和图片等,我们应该写出特定数量的内容页。

因此我想停用/禁用/不显示/...任何图形、列表和表格。

这可能吗?

我有一份完成的文档。如果我必须将某些内容应用于每个图表、表格和列表,那么这比复制并删除所有内容要费力得多。但是,如果您有一个无需妥协但从一开始就经过深思熟虑的解决方案,那么请随时分享,即使它对我的问题没有帮助。

答案1

这是一个基于 LuaLaTeX 的解决方案。它定义了一个名为的 Lua 函数,hide_stuff该函数“吞噬”所有 、 和 环境的内容figuretable唯一lstlisting与输入相关的要求是:(a) 环境的\begin\end语句不得出现在同一个输入行上,(b) 每个输入行只有一个\begin{...}\end{...}语句。

请注意,无需修改或“启动”任何现有的figuretablelstlisting环境。您需要做的(除了使用 LuaLaTeX 编译文档外)就是将代码块从 复制\usepackage{luacode}\AtBeginDocument{...}LaTeX 文档的序言中。

在此处输入图片描述

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{listings} % for 'lstlistings' environment    
\usepackage{luacode} % for 'luacode' environment
\begin{luacode}
in_group = false  -- initialize a Boolean variable
function hide_stuff ( buff )
  if string.find ( buff, "\\begin{figure}" ) or 
     string.find ( buff, "\\begin{table}" ) or
     string.find ( buff, "\\begin{lstlisting}" ) then 
            -- start gobbling
            buff = buff:gsub ( "\\begin%b{}.-$" , "" )
            in_group = true
  elseif string.find ( buff, "\\end{figure}" ) or 
         string.find ( buff, "\\end{table}" ) or
         string.find ( buff, "\\end{lstlisting}" ) then
            buff = buff:gsub ( "^.-\\end%b{}" , "" )
            in_group = false -- end gobbling
  elseif in_group == true then  
            buff = "" -- keep gobbling
  end
  return buff
end
\end{luacode}  
%% Assign the fuction to LuaTeX's "process_input_buffer" callback
\AtBeginDocument{\directlua{luatexbase.add_to_callback (
   "process_input_buffer", hide_stuff, "hide_stuff" )}}

\begin{document}

aaa\begin{figure}
\caption{AAA} \end{figure}

bbb

\begin{table} \caption{BBB}
\end{table}ccc

\begin{lstlisting}
CCC
\end{lstlisting}

uuu\begin{figure} % empty "figure" environment
\end{figure}vvv

\end{document}

答案2

您可以使用例如 environ 来收集尸体并将其扔掉:

\documentclass[]{article}
\usepackage{environ,listings}

\RenewEnviron{table}{}
\RenewEnviron{lstlisting}{}
\RenewEnviron{figure}{}
\begin{document}
abllbl

\begin{figure}
figure
\end{figure}

\begin{table}
table
\end{table}

\begin{lstlisting}
abc
\end{lstlisting}

\end{document}

如果您不想丢弃全部内容,您可以重新定义要忽略的命令,例如\renewcommand\includegraphics[2][]{}

答案3

这可以通过使用来解决布尔值

您定义一个布尔变量,该变量表明您是否要包含图形和表格。每个图形和表格语句都必须包含在一个 if 语句中,以测试布尔变量。

最简单的方法是:

\documentclass{article}
\usepackage{graphicx}

\newif\ifplotfig  % you can also call it ifplottab or ifplotfigtab
\plotfigtrue      % uncomment for 'setting' it to false

\begin{document}
  Some text with reference to Fig.~\ref{fig:myLabel} 

  \begin{figure}[h]
    \centering
    \ifplotfig
      \includegraphics[width=0.65\textwidth]{./SOMEFIGURE.pdf}
    \fi
    \caption{Test Caption}\label{fig:myLabel}
  \end{figure}

  Some more text with reference to Table~\ref{tab:myLabel}...

  \begin{table}
    \caption{Tables Caption}\label{tab:myLabel}
    \centering
    \ifplotfig
      \begin{tabular}{c|c c}
        Grid & Some Value & Another Value  \\ \hline
        CD24 & -1398 & -1191 \\
        CD72 & -1926 & -2655
      \end{tabular}
    \fi
  \end{table}
\end{document}

该解决方案来自答案。这里您将找到替代解决方案。

为了减少添加if子句所花费的时间,您可以搜索和替换

  • \begin{tabular}经过\ifplotfig \begin{tabular}
  • \end{tabular}\end{tabular} \fi
  • \includegraphics{...}经过\ifplotfig \includegraphics{...} \fi

对于后一种替换,您需要正则表达式或使用非正则表达式通配符的搜索和替换函数。如果您没有这些经验,您可以替换

  • \includegraphics\ifplotfig \includegraphics
  • .pdf}需要用适合您图形文件的文件结尾来替换.pdf} \fipdf

相关内容