需求痛点
很多时候,使用LaTex插入程序代码。而代码中的一些字符因为有LaTex的语法意义,导致不能正常编译,如下例:
\documentclass[UTF8,a4paper]{article}
\begin{document}
def recursive(array, last, result):
if last == 0:
result.append(array[:])
return
for i in range(0, last + 1):
recursive(array, last - 1, result)
if last & 1 == 0:
array[0], array[last] = array[last], array[0]
else:
array[i], array[last] = array[last], array[i]
def permutations(array):
result = []
recursive(array, len(array) - 1, result)
return result
if __name__ == '__main__':
result = permutations(['A', 'B', 'C', 'D'])
for x in result:
print(x)
\end{document}
要编译,就是这样:
然后我们只能这样改代码了:
\documentclass[UTF8,a4paper]{article}
\begin{document}
def recursive(array, last, result):
if last == 0:
result.append(array[:])
return
for i in range(0, last + 1):
recursive(array, last - 1, result)
if last \& 1 == 0:
array[0], array[last] = array[last], array[0]
else:
array[i], array[last] = array[last], array[i]
def permutations(array):
result = []
recursive(array, len(array) - 1, result)
return result
if \_\_name\_\_ == '\_\_main\_\_':
result = permutations(['A', 'B', 'C', 'D'])
for x in result:
print(x)
\end{document}
这样编译是通过了,但是效果不咋滴:
没完没了的,再改下去,人都要疯了,从源代码变成pdf文档就这么困难吗?
原封不动
要使用的话,直接使用verbatim环境就行,不需要引入任何包。verbatim的意思就是原封不动。如下例:
\documentclass[UTF8,a4paper]{article}
\begin{document}
\begin{verbatim}
def recursive(array, last, result):
if last == 0:
result.append(array[:])
return
for i in range(0, last + 1):
recursive(array, last - 1, result)
if last & 1 == 0:
array[0], array[last] = array[last], array[0]
else:
array[i], array[last] = array[last], array[i]
def permutations(array):
result = []
recursive(array, len(array) - 1, result)
return result
if __name__ == '__main__':
result = permutations(['A', 'B', 'C', 'D'])
for x in result:
print(x)
\end{verbatim}
\end{document}
显示效果:
缩进控制
代码没有缩进啊,怎么办呢?所有的缩进都被去除了,没有做到原封不动啊!怎么办呢?把tab改成空格就行了:
\documentclass[UTF8,a4paper]{article}
\begin{document}
\begin{verbatim}
def recursive(array, last, result):
if last == 0:
result.append(array[:])
return
for i in range(0, last + 1):
recursive(array, last - 1, result)
if last & 1 == 0:
array[0], array[last] = array[last], array[0]
else:
array[i], array[last] = array[last], array[i]
def permutations(array):
result = []
recursive(array, len(array) - 1, result)
return result
if __name__ == '__main__':
result = permutations(['A', 'B', 'C', 'D'])
for x in result:
print(x)
\end{verbatim}
\end{document}
然后重新编译,效果就出来了:
Verbatim效果显示其实并不好,不是最优的选择。