我已尝试在此最小化我的场景。基本上,我想通过 beamer 类从外部 tex 文件中调用每段突出显示的代码。
有两个 .tex 文件
- 代码
- 主文本
我的目标是将代码存储在 code.tex 中,并根据标题在 main.tex 中调用它们,以便整理所有内容。如果我在 main.tex 上调用 \testCode{},则会出现各种问题。有什么想法可以处理这个过程吗?
代码
\def\testCode{
\begin{lstlisting}[style=CStyle]
#include <stdio.h>
int main(void)
{
printf("Hello World!");
}
\end{lstlisting}
}
\def\testText{
Test input text
}
主文本
\documentclass{beamer}
\mode<presentation>
{
\usetheme{Madrid} % or try Darmstadt, Madrid, Warsaw, ...
\usecolortheme{beaver} % or try albatross, beaver, crane, ...
\usefonttheme{serif} % or try serif, structurebold, ...
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{caption}[numbered]
}
\usepackage{xcolor}
\usepackage{listings}
\definecolor{mGreen}{rgb}{0,0.6,0}
\definecolor{mGray}{rgb}{0.5,0.5,0.5}
\definecolor{mPurple}{rgb}{0.58,0,0.82}
\definecolor{backgroundColour}{rgb}{0.95,0.95,0.92}
\lstdefinestyle{CStyle}{
backgroundcolor=\color{backgroundColour},
commentstyle=\color{mGreen},
keywordstyle=\color{magenta},
numberstyle=\tiny\color{mGray},
stringstyle=\color{mPurple},
basicstyle=\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2,
language=C
}
\input{code.tex}
\begin{document}
\begin{frame}{title here}
\testText{}
\testCode{}
\end{frame}
\end{document}
答案1
如果这对您来说是一个解决方案,我宁愿将我的代码放在其专用文件(例如,code.c)中,然后使用此命令:
\lstinputlisting[style=CStyle]{code.c}
否则,这里有一个答案:\newcommand 内的环境
编辑
您还可以使用命令的可选参数firstline
和将同一文件中的多个代码包含在文档的不同位置。您还可以应用不同的样式,这样您就可以在同一源文件中混合不同的语言,无论您出于什么原因想要这样做。lastline
\lstinputlisting
我先给你看结果。然后按照代码操作。
问题的主要代码,并扩展了建议的答案:
\documentclass{beamer}
\mode<presentation>
{
\usetheme{Madrid} % or try Darmstadt, Madrid, Warsaw, ...
\usecolortheme{beaver} % or try albatross, beaver, crane, ...
\usefonttheme{serif} % or try serif, structurebold, ...
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{caption}[numbered]
}
\usepackage{xcolor}
\usepackage{listings}
\definecolor{mGreen}{rgb}{0,0.6,0}
\definecolor{mGray}{rgb}{0.5,0.5,0.5}
\definecolor{mPurple}{rgb}{0.58,0,0.82}
\definecolor{backgroundColour}{rgb}{0.95,0.95,0.92}
\lstdefinestyle{CStyle}{
backgroundcolor=\color{backgroundColour},
commentstyle=\color{mGreen},
keywordstyle=\color{magenta},
numberstyle=\tiny\color{mGray},
stringstyle=\color{mPurple},
basicstyle=\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2,
language=C
}
\lstdefinestyle{LatexStyle}{
language=[LaTeX]TeX
}
\begin{document}
\begin{frame}{title here}
A C code:
\lstinputlisting[style=CStyle,firstline=2,lastline=7]{code.tex}
A \LaTeX\ code from same file:
\lstinputlisting[style=LatexStyle,firstline=10,lastline=10]{code.tex}
\end{frame}
\end{document}
包含要包含在文档中的不同代码片段的源文件:
% First code: C
#include <stdio.h>
int main(void)
{
printf("Hello World!");
}
% Second code: LaTeX
\newcommand{\testText}{Test input text}
享受!