我写了一个bash
脚本osmimage(测试来源),它下载通过地址指定的地图。我想编写一个使用 调用此脚本的包\write18
,但存在一些问题。
以下示例适用于lualatex
:
\documentclass{article}
%\usepackage[latin1]{inputenc}
%\usepackage[T1]{fontenc}
\usepackage{graphicx}
\def\loc{Bergheimer Straße 110A, 69115 Heidelberg, Germany}
%\def\loc{Rathausmarkt 1, 20095 Hamburg, Deutschland}
\newcommand*\getmap%
{%
%\immediate\write18{osmimage -l "\loc"}
\immediate\write18{osmimage -l "\unexpanded\expandafter{\loc}"}
}%
\begin{document}
\section{Example}
Did you ever wanted to visit the Dante e.V. office? Here we go:
\getmap
\begin{center}
\includegraphics[width=10cm]{osmimage}
\end{center}
\end{document}
代码编辑pdflatex
在 Ulrike 的评论之后。和其他编码仍然存在问题utf-8
!
pdflatex
如果我使用(使用inputenc
和)运行此文件,fontenc
地址传输将不再起作用。不使用inputenc
或 ,fontenc
我会在 URL 中得到各种奇怪的输出(参见日志)。
如果我使用仅 ASCII 地址(例如汉堡市政厅),它也可以起作用pdflatex
!
因此,似乎存在脚本预期的某种编码问题,UTF-8
或者可能是 url 编码。
有什么想法吗?将包裹限制为lualatex
或者可能xelatex
(尚未测试)utf-8
编码
答案1
包裹stringenc
可以将地址字符串从 转换latin1
为utf-8
,需要osmimage
:
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{stringenc}
\def\loc{Bergheimer StraXe 110A, 69115 Heidelberg, Germany}
%\def\loc{Rathausmarkt 1, 20095 Hamburg, Deutschland}
\newcommand*\getmap{%
\StringEncodingConvert{\locstring}{%
\detokenize\expandafter{\loc}%
}{latin1}{utf-8}%
\StringEncodingSuccessFailure{% success
}{% failure
\errmessage{Converting to UTF-8 failed}%
}%
\immediate\write18{osmimage -l "\locstring"}
}%
\begin{document}
\section{Example}
Did you ever wanted to visit the Dante e.V. office? Here we go:
\getmap
\begin{center}
\includegraphics[width=10cm]{osmimage}
\end{center}
\end{document}