我正在尝试为我的学生创建一份编程教材。我的目标是拥有一个环境(例如“ code
”),因此,如果我在文件中输入以下内容.tex
:
\begin{code}{Sample script}
echo "Hi there<br/>";
\end{code}
然后我得到以下信息:
在我的
.tex
文件中,好像我写道:\begin{figure} \begin{minted}{php} echo "Hi there<br/>"; \end{minted} \caption{\href{\thefigure{}.php}{Sample script}} \end{figure}
自动生成的
\thefigure{}.php
文件(即文件名跟在数字计数器数值后面1.3.php
)与我的文件位于同一目录中,包含我在和.tex
之间编写的代码。\begin{code}
\end{code}
我的目标是将所有编程代码提取到.php
书中链接的文件中。
那可能吗?
提前非常感谢您!
答案1
我反过来做:包含代码(使用listings
包,我相信minted
是类似的)并将其包含到文档中。使用键firstline
,lastline
您可以选择要显示的精确范围。
答案2
我有以下解决方案:
\documentclass[a4paper,11pt]{memoir}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[spanish,es-lcroman,es-noindentfirst]{babel}
\usepackage[pdftex]{color,graphicx}
\usepackage[minted,skins,breakable]{tcolorbox}
\usepackage[pdftex,unicode,colorlinks]{hyperref}
\usepackage{lipsum}
\chapterstyle{veelo}
\title{Text}
\author{Me}
\newtcblisting[auto counter,number within=section]{php}[1][\url{code/\thetcbcounter.php}]{
listing engine=minted,%minted style=colorful,
minted language=php,minted options={fontsize=\small,linenos,numbersep=3mm,startinline},
listing file=code/\thetcbcounter.php,
run system command={./linter.sh php \thetcbcounter},
colback=blue!5!white,colframe=red!75!black,listing only,breakable,
left=8mm,enhanced,title=\textbf{Listado~\thetcbcounter:} \href{code/\thetcbcounter.php}{#1},
before title={\hypersetup{urlcolor=blue}},
overlay={\begin{tcbclipinterior}\fill[red!20!blue!20!white] (frame.south west)
rectangle ([xshift=8mm]frame.north west);\end{tcbclipinterior}}}
\begin{document}
\frontmatter
\maketitle
\tableofcontents
\mainmatter
\part{Basics}
\chapter{Introduction}
\section{Testing 123}
\lipsum
\begin{php}[Test]
class Products extends CI_Controller
{
public function index()
{
$this->load->view('products/index');
}
}
\end{php}
\lipsum
\end{document}
内容如下linter.sh
:
#!/bin/sh
fn_php()
{
mv $1.php $1
echo "<?php\n" | cat - $1 > $1.php
php -l $1.php 2> $1.linter
php -l $1.php
}
cd code
if [ "$1" = "php" ]
then
fn_php $2
fi
cd ..
我的解决方案满足了我设定的所有目标。它生成从\begin{php}
...\end{php}
环境中提取包含内容的外部文件,然后使用 检查其语法php -l
。希望这对其他人有所帮助 ;)。
非常感谢您的帮助!