我怎样才能使 xcolor 在独立文档中工作?

我怎样才能使 xcolor 在独立文档中工作?

xcolor我正在尝试使用文档中包的基本颜色standalone,但返回了以下错误:

main/filename.tex|29␣error|␣Package␣xcolor␣Error:␣Undefined␣color␣`MAGENTA'.

主要文件内容如下:

\documentclass[10pt, b6paper, twoside, openright]{memoir}
\setlrmarginsandblock{1.25cm}{.5cm}{*}
\setulmarginsandblock{1.5cm}{*}{1}
\checkandfixthelayout{}
\usepackage{float}
\usepackage{titlesec}
\usepackage[dvipsnames]{xcolor}
\usepackage[headings]{fancyhdr}
\usepackage{minitoc}
\usepackage{array}
\usepackage{pdfpages}
\usepackage{standalone}
\begin{document}
    \tableofcontents{}
    \dominitoc{}
    \input{mwedoc}
\end{document}

我的独立文档(mwedoc)包含以下内容:

\documentclass{standalone}
\usepackage[dvipsnames]{xcolor}
\usepackage[headings]{fancyhdr}
\usepackage{titlesec}
\usepackage{float}
\usepackage{minitoc}
\usepackage{array}
\begin{document}
    \chapter{Chapter Title}
    \begin{table}[htbp]
        \begin{center}
            \begin{tabular}[c]{ m{(\textwidth-0.5in)/2} m{(\textwidth-0.5in)/2} }
                \Large{\textcolor{magenta}First} &
                \Large{\textcolor{magenta}Second} \\
                \textcolor{red}{1. Mondays} &
                \textcolor{red}{1. Mondays} \\
                \textcolor{red}{2. Saturdays} &
                \textcolor{red}{2. Thursdays} \\ &
                \textcolor{red}{3. Sundays:}
            \end{tabular}
        \end{center}
    \end{table}
    \thispagestyle{fancy}
    \minitoc{}
    \newpage{}
\end{document}

答案1

standalone包的基本默认行为是,对于子文件,它“忽略任何内容直到下一个\begin{document},然后将文档环境作为一个简单的组”(texdoc standalone,s6.1(p22)) - 也就是说,在默认模式下,它会跳过子文件的前言,包括命令\documentclass{}

为了演示,请输入两个文件:它们都具有相同的内容(a tabular),但其中一个文件是standalone 班级并通过前言命令为页面背景着色;另一个文件是article类,并使用命令为表格本身着色\colorbox{}{}

第一个子文件被调用input1.tex,并在自行编译时生成以下内容:

输入1

平均能量损失

\documentclass[border=6pt]{standalone}
\usepackage{xcolor}
\pagecolor{blue!12}
\begin{document}
            \fbox{\begin{tabular}[l]{ ll }                
    \Large\textcolor{magenta}First1 &
                \Large\textcolor{magenta}Second2 \\
                \textcolor{red}{1. Mondays} &
                \textcolor{red}{1. Mondays} \\
                \textcolor{red}{2. Saturdays} &
                \textcolor{red}{2. Thursdays} \\ &
                \textcolor{red}{3. Sundays:}
            \end{tabular}
            }
\end{document}

第二个文件,input2.tex将其作为标准尺寸默认页面上的第一个项目,并带有页码(页面大小和页码由文档类定义):

输入2

完整页面:

输入2作为页面

平均能量损失

\documentclass{article}
\usepackage{xcolor}
\pagecolor{red!2}
\usepackage{array}
\begin{document}
            \fbox{\colorbox{green}{\begin{tabular}[l]{ ll }                
    \Large\textcolor{magenta}First2 &
                \Large\textcolor{magenta}Second2 \\
                \textcolor{red}{1. Mondays} &
                \textcolor{red}{1. Mondays} \\
                \textcolor{red}{2. Saturdays} &
                \textcolor{red}{2. Thursdays} \\ &
                \textcolor{red}{3. Sundays:}
            \end{tabular}
            }}
\end{document}

现在,standalone在主文件中使用包并对input两个子文件进行 ting 操作会产生以下结果:

输入

在这两种情况下,都会跳过子文件前言,只将\begin{document}和之间的内容\end{document导入主文档。

第一个子文件的\pagecolor{}命令位于前言中,对 没有影响input;第二个子文件的\colorbox{}{}命令位于文档主体中,并延续到input

换句话说,standalone包的默认值就像是介于两者之间的任何内容\begin{document}\end{document只是复制粘贴到主文档中。

旁注:standalone软件包具有与如何处理前导码相关的选项,例如,合并多个软件包选项。此外,在某些情况下,特别是在软件包的加载顺序很重要的情况下,子文件前导码可能需要“小心地合并到主前导码中”,并且standalone软件包有一个选项可以帮助完成此任务(第 23 页)。

现在,standalone 班级(最初的意图:在裁剪的 PDF 画布中生成单个图像)没有这样的页面,因此浮动无处可浮动(因此figure毫无用处),没有要设置的标题,因为没有边距(因此也没有居中),章节和其他分段命令没有上下文,因此会出错(因此没有目录)。等等。这将实际输入文件减少到只有tabular(包括来自另一个答案的 @JohnKormylo 更正的列大小代码):

输入3

注意:magenta是 19 种基本颜色之一xcolor,因此[dvipsnames]不需要选项。Magenta(大写M)是 dvispsnames 颜色名称(texdoc xcolor列出所有(已定义的)颜色名称)。

注 2:使用\documentclass[class=memoir]{standalone}允许底层类中的一些可用设置通过(字体大小和间距设置)。默认底层类是article

平均能量损失

\documentclass[class=memoir]{standalone}
\usepackage{xcolor}
%\usepackage{fancyhdr}
%\usepackage{titlesec}
%\usepackage{float}
%\usepackage{minitoc}
\usepackage{array}
\begin{document}
%    \chapter{Chapter Title}
%    \begin{table}[htbp]
%        \begin{center}
            \begin{tabular}[c]{ m{\dimexpr 0.5\textwidth-0.25in} m{\dimexpr 0.5\textwidth-0.25in} }
                \Large{\textcolor{magenta}First} &
                \Large{\textcolor{magenta}Second} \\
                \textcolor{red}{1. Mondays} &
                \textcolor{red}{1. Mondays} \\
                \textcolor{red}{2. Saturdays} &
                \textcolor{red}{2. Thursdays} \\ &
                \textcolor{red}{3. Sundays:}
            \end{tabular}
%        \end{center}
%    \end{table}
%    \thispagestyle{fancy}
%    \minitoc{}
%    \newpage{}
\end{document}

input产生:

包括 3

平均能量损失

\documentclass[10pt, b6paper, twoside, openright]{memoir}
\setlrmarginsandblock{1.25cm}{.5cm}{*}
\setulmarginsandblock{1.5cm}{*}{1}
\checkandfixthelayout{}
\usepackage{float}
%\usepackage{titlesec}
\usepackage{xcolor}
\usepackage{fancyhdr}
\usepackage{minitoc}
\usepackage{array}
\usepackage{pdfpages}
\usepackage{standalone}
\begin{document}
%    \tableofcontents{}
%    \dominitoc{}
    \input{input1}
    \input{input2}
    \par\bigskip
    \input{input3}
\end{document}

对于颜色,使用开关{\color{magenta} text}或命令\textcolor{magenta}{text}将“文本”颜色设为洋红色。


尽管如此,使用 还是standalone更加微妙: class 有和等standalone选项,尽管如此,“一般建议将浮动环境保留在主文档内,并仅将其内容放入独立文件中。这也使得在不同主文档的不同浮动中包含相同内容变得简单。如果使用类似[它们] 的包定义自定义浮动,则尚不受支持。根据它们定义浮动的方式,它们可能仍然有效。”(第 12 页)crop=falsemulti=...float=...float


在这种情况下,在输入文件中使用memoirclass 而不是class可能会更有效。standalone

答案2

这不是一个答案,而是一个工作回忆录 MWE。

\chapter在 standalone 类中包含或 之类的东西是没有意义的\minitoc。可以将 standalone 作为包包含(参见手册第 6 节),但据我所知,它实际上所做的只是定义\includestandalone

\documentclass{memoir}
\usepackage[dvipsnames]{xcolor}
\usepackage[headings]{fancyhdr}
\usepackage{titlesec}
\usepackage{float}
\usepackage{minitoc}
\usepackage{array}
\usepackage{showframe}% MWE only
\begin{document}
    \chapter{Chapter Title}
    \begin{table}[htbp]
        \centering
            \fbox{\begin{tabular}[c]{ m{\dimexpr 0.5\textwidth-0.25in} m{\dimexpr 0.5\textwidth-0.25in} }
                \textcolor{magenta}{\Large First} &
                \textcolor{magenta}{\Large Second} \\
                \textcolor{red}{1. Mondays} &
                \textcolor{red}{1. Mondays} \\
                \textcolor{red}{2. Saturdays} &
                \textcolor{red}{2. Thursdays} \\ &
                \textcolor{red}{3. Sundays:}
            \end{tabular}}
    \end{table}
    \thispagestyle{fancy}
    \minitoc{}
    \newpage{}
\end{document}

答案3

OP似乎混淆了两个概念:

  1. 导入代码与

  2. 导入图形。

如果您希望导入代码,请\input在主文档中使用;但是,导入的文档的行为就像您将其插入(通过键入)主文档一样。因此,导入的文档不能有\documentclass\usepackages 或\begin\end{document}。它从主文档继承了这些特征。

另一方面,如果您希望导入图形,独立文件应该完全自给自足,具有自己的\documentclass\usepackage\begin\end{document}。但是在这种情况下,您首先编译独立文档以创建 PDF。然后,在主文档中,您不使用\input,而是\includegraphics{mwedoc}显示 mwedoc.pdf 的 PDF 图形。是否将 放在环境\includegraphicsfigure是一个风格问题,但基本概念是相同的。

相关内容