外部纯文本文件的长度

外部纯文本文件的长度

(Xelatex)如何确定外部纯文本文件的最大行长度(例如字符数)?此文件可能包含特殊的 Latex 字符。

Usecase 是 minted 语法高亮的代码,应该作为外部文件存储。此外,这些 minted 代码片段位于 mdframed、minipage、center 环境中。

因此,代码应居中,背景应适合一行的最大长度。在我的示例中,始终需要调整,例如 12 厘米。

我无法确定铸模代码的宽度。我的解决方法是使用纯字符计数。

\documentclass[a4paper]{article}

\usepackage{minted}
\usepackage{mdframed}

\begin{document}

\begin{center}
\begin{minipage}{12cm}
\begin{mdframed}[backgroundcolor=green!10!white, userdefinedwidth=12cm]
\inputminted{python}{example.py}
\end{mdframed}
\end{minipage}
\end{center}

\end{document}

我试过了:

  • 计算:\widthof
  • \输入
  • 逐字:\verbatiminput
  • 字符串字符串:\stringlength

无法对包含特殊 Latex 字符的字符串使用 \widthof 和 \stringlength,例如:{}。Verbatim 在这些宏中不起作用。

答案1

忍不住要扩展我之前的评论……

这是一个简单的例子,你可以用它来编译-shell-escape

\RequirePackage{filecontents}
\begin{filecontents*}{example.py}
#!/usr/bin/env python
Celsius = int(raw_input("Enter a temperature in Celsius: "))

Fahrenheit = 9.0/5.0 * Celsius + 32

print "Temperature:", Celsius, "Celsius = ", Fahrenheit, " F"
\end{filecontents*}
\documentclass[a4paper]{article}
\parindent0pt
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{minted}
\usepackage{mdframed}

% the data file
\def\keyfile{example.py}

% find the longest line and print value to `longline.wc`
% compile with `-shell-escape` option
\immediate\write18{wc -L \keyfile | awk '{print $1}'  > longline.wc} %$

% read in value to \longlineval
\newread\longline
\openin\longline=longline.wc
\read\longline to \longlineval

% convert value from longline.wc to a 'pt' value
\newlength\longlineconv
\longlineconv=\longlineval pt
% multiply by a chosen factor (here: 5.25)
\def\mfactor{5.75}
\newlength\mdlen
\setlength\mdlen{\dimexpr \mfactor\longlineconv \relax}

\begin{document}

Longest line of ``\keyfile'': \longlineval\par
Multiplication factor: \mfactor\par
Result of multiplication factor: \the\mdlen\par

\bigskip

% Using the length
\begin{center}
\begin{minipage}{12cm}
\begin{mdframed}[backgroundcolor=green!10!white, userdefinedwidth=\mdlen]
\inputminted{python}{example.py}
\end{mdframed}
\end{minipage}
\end{center}

\end{document}

相关内容