Deine Angabe bei `\usepackage` enthält mehrere Fehler.
Die Tilde, `~`, steht bei Unix-Betriebsystemen für das HOME-Verzeichnis des aktuellen Benutzers. Angenommen, die Dein HOME-Verzeichnis ist `/home/typ42`, dann entspricht `~` also bereits eben diesem Verzeichnis. Die Pfadangabe `~/home/typ42/Dropbox/mein.sty` wäre damit `/home/typ42/home/typ42/Dropbox/mein.sty`.
*→ Entweder die Tilde oder der Teil `/home/type42` muss weg.*
Die Tilde ist bei LaTeX ein aktives Zeichen, das zu `\nobreakspace {}` expandiert. Das passiert auch innerhalb des Arguments von `\usepackage`. Man müsste diese Expansion der Tilde also verhindern.
*→ Um die Tilde im einem Dateinamen zu verwenden, muss man sie mit `\\string~` vor der Expansion schützen.*
Pakete werden in `\usepackage` nur mit ihrem Namen angegeben. Gibt man dort beispielsweise `foo.sty` an, so sucht LaTeX nach einer Paketdatei mit dem Namen `foo.sty.sty`.
*→ Die Endung `.sty` hat in `\\usepackage` nicht verloren.*
Pakete werden in `\usepackage` nur mit ihrem Namen, nicht jedoch mit einem Pfad angegeben. Gibt man den vollen Pfad an, wird die Datei zwar gefunden, man erhält bei korrekten Paketen, die sich LaTeX per `\ProvidesPackage` bekannt machen, aber min. eine Warnung:
> ``LaTeX Warning: You have requested package `./test',
but the package provides `test'.``
Es gibt aber noch weit unangenehmere Konsequenzen. So gilt für LaTeX dann nämlich nicht mehr das entsprechende nur mit Namen angegebene Paket als geladen:
\begin{filecontents*}{test.sty}
\ProvidesPackage{test}[2015/08/28 v0.1 Testpaket]
\ProcessOptions\relax
\end{filecontents*}
\documentclass{article}
\usepackage{./test}
\makeatletter
\@ifpackageloaded{test}{\newcommand*\Paketgeladen{Ja}}{\newcommand*\Paketgeladen{Nein}}
\makeatother
\begin{document}
Paket \texttt{test} geladen? \Paketgeladen.
\end{document}
Hier erhält man nicht nur besagte Warnung, in der Ausgabe heißt es auch, dass Paket `test` nicht geladen sei. Abfragen auf geladene Pakete über ihren Namen sind aber keineswegs selten in anderen Paketen. Weitere Es existieren weitere Nachteile der Angabe eines Pfades sind nicht ausgeschlossen.
beispielsweise bei der Übergabe von Optionen per `\PassOptionsToPackage`.
*→ Pfadangaben haben in `\\usepackage` nichts verloren.*
*Was aber kann man nun tun?* Man kann zum einen das Verzeichnis, in dem das Paket gefunden werden soll, in die Environmentvariable/Umgebungsvariable `TEXINPUTS` eintragen. Dann kann man das Paket einfach wie gewohnt nur mit Namen angeben. Unter Linux geht das in den meisten Shells (beispielsweise `bash` im Terminalfenster) bereits beim Aufruf, indem man das Setzen der Environmentvariable voranstellt:
<pre><code>TEXINPUTS=~/Dropbox:"\`kpsewhich -var-value=TEXINPUTS\`" pdflatex foo.tex</code></pre>
würde die Paketdatei `mein.sty` beispielsweise zuerst im Verzeichnis `Dropbox` suchen. Auch einige Editoren bieten die Möglichkeit, Umgebungsvariablen anzupassen. Natürlich kann man dafür auch Dateien wie `.bashrc` oder `.profile` oder `.environment` verwenden. Welche Datei dafür geeignet ist, hängt von der verwendeten Shell und ggf. der Linux-Distribution ab.
*Noch besser wäre allerdings, die Datei korrekt im lokalen TEXMF-Baum zu installieren.* Will man sie weiterhin in `~/Dropbox` liegen haben, genügt dafür ggf. auch ein Link oder ein symbolischer Link, den man mit:
<pre><code>cd \`kpsewhich -var-value=TEXMFHOME | cut -d: -f1\`
mkdir -p tex/latex/mein
cd tex/latex/mein
ln -s ~/Dropbox/mein.sty .</code></pre>
anlegen kann. Windows-Anwender verwenden an Stelle eines symbolischen Links eine logische Verknüpfung. Alles weitere zur korrekten Installation und Verwendung lokaler Dateien findet sich unter der Frage: [Wie kann ich Klassen oder Pakete verwenden, die nur als einzelne Datei bereitgestellt werden?](http://texwelt.de/wissen/fragen/4887/wie-kann-ich-klassen-oder-pakete-verwenden-die-nur-als-einzelne-datei-bereitgestellt-werden)