我想使用一个环境,让里面的所有内容都变得不可见!我希望在.tex
编译期间读取所有内容,但不渲染我的 LaTeX 文档的某些部分。
问题是\begin{comment}
……里面的代码没有被“读取”。我知道我的问题不寻常,但实际上我希望里面的代码被读取(它会生成一个文件),但我不希望它被渲染(它通常会写入一行又一行我不想要的代码)
问题\phantom
是它仍然被“渲染”为一个空白矩形。如果我这样做,我会得到一个巨大的空白空间
(实际上,我想使用 SageTex,它“混合”了 SageMath 和 LaTeX。有一种方法可以直接在文件中写入 Sage 代码.tex
。您必须使用 LaTeX 编译文档。它将生成一个.sage
文档,这次我必须使用 Sage 进行编译。最后,我必须使用 LaTeX 进行编译,以便 Sage 计算能够被 LaTeX“理解”。例如,我可以编写一个 Sage 代码“ x = 2 + 2
”,并使用$\sage{x}$
,它将呈现4
。但我的问题是,通过这样做,它总是先逐字呈现“ x = 2 + 2
”。我不想看到那个。我希望我的计算被隐藏,而不是呈现,这样,在查看时.pdf
我们无法确定是否使用了 Sage)
简单示例:
\usepackage{sagetex}
\begin{document}
%\begin{comment}
\begin{sageblock}
U = 12
\end{sageblock}
%\end{comment}
U = $\sage{U}$
\end{document}
我想要一个简单的U = 12
“LaTeX 方式”渲染“”。这样我就可以渲染两次。一次是“sage code 方式”,一次是渲染良好的“LaTeX 方式”
StefanH 的解决方案:
\newcommand\donotshow[1]{\smash{\vphantom{#1}}}
看起来运行良好,但仍然出现错误。我认为这是因为我不想只\donotshow{something}
使用\donotshow{ an environment, with multiple lines}
答案1
使用sagesilent
环境而不是sageblock
。根据sagetex
手册,
此环境类似于
sageblock
,但它不会排版任何代码;它只是将其写入文件.sage
。如果您必须在 Sage 中执行一些与您正在编写的文档不相关或不感兴趣的设置,这将非常有用。
答案2
这comment
包提供了一个comment
从输出中删除部分代码的环境:
\documentclass{article}
\usepackage{comment}
\begin{document}
This text will be output.
\begin{comment}
And that won't.
\end{comment}
\end{document}
结果是
该文本将被输出。
答案3
也许不是最好的解决方案,但您可以用来\vphantom
获取一个没有水平空间且与内容具有相同垂直距离的盒子,然后用 将其删除\smash
。
\documentclass{article}
\usepackage[nopar]{lipsum}
\newcommand\testA{\textbf{AAA}}
\newcommand\donotshow[1]{\smash{\vphantom{#1}}}
\begin{document}
\testA
\lipsum[1]
\textbf{[HERE]}
\donotshow{%
Test of renewing commands
\gdef\testA{\textbf{BBB}}
}%
\lipsum[2]
\testA
\end{document}
在 [此处] 处,一些文本与 的重新定义一起消失\testA
。我使用\gdef
,因为据我所知, 没有 的全局版本\renewcommand
。
答案4
您可以使用(标准 TeX)让小部分文本或数学消失。对于较大的部分,您可以使用包中的\phantom
文本使文本透明。消失的部分只是不可见的,但仍会占用空间。\transparent{0}
transparent
\documentclass{article}
\usepackage{transparent}
\newcommand\somestuff
{Some sample text different from lipsum.
\begin{equation}
x = 1 + \phantom{2} + 3
\end{equation}
Some sample \phantom{text} different from lipsum.
}
\begin{document}
\somestuff
{\transparent{0}%
\somestuff
}
\somestuff
\end{document}